Ash Barty recovered from 4-6 4-5 down to beat Elina Svitolina to win 4-6 7-6(5) 6-2 to reach the Stuttgart final on Saturday.
Svitolina made her way to the semis after beating defending champion Petra Kvitova, and was on the cusp of reaching the final before the world number one fought back.
Barty took the win on her 25th birthday and could serve herself up a present on Sunday.
Vondrousova eyes tennis gold after upsetting Svitolina
- Tsitsipas into third 2021 final with impressive win over Sinner
- Paire barred from Olympics for 'deeply inappropriate behaviour'
- Federer 'probably third or fourth best player on clay' but can he win Roland-Garros?
Svitolina dominated in the first set with a reliable serve taking her to 6-4, with Barty taking just six points off Svitolina’s serve.
Barty raced into a 3-0 advantage in the second set before Svitolina mounted her own resistance, taking four games in a row at 4-1 down, forcing Barty to break and rescue the match, winning the set on a tiebreaker 7-6(5).
The Australian pressed home her best form in the third set, breaking Svitolina twice and giving away just five points on her service.
Aryna Sabalenka and Simona Halep take part in the other semi-final to decide Barty's opponent for Sunday's match-up.
Trailblazers - The inspiring story of Serena Williams
With Osaka and Barty out, who will win gold in wide-open women's draw?
Superb Sorribes Tormo dumps Barty out of Olympics