Fourth seed Elena Rybakina ended world number one Iga Swiatek’s recent dominance at the Stuttgart Open, winning in three sets to reach the final.
Kazakhstan’s Rybakina, 24, beat the Polish top seed 6-3 4-6 6-3, halting her 10-match win streak at the event.
Swiatek had won the previous two editions of the WTA 500 tournament.
Rybakina faces Ukraine’s unseeded Marta Kostyuk in Sunday’s final after she beat Marketa Vondrousova 7-6 (2) 6-2.
“It was, like always a very tough match and I was fighting for every ball, it was such a close match,” said Rybakina.
“I’m really happy that I managed to win and I showed a good game.”
Four-time Grand Slam winner Swiatek started brightly on her favoured clay surface, breaking in the opening game and holding serve before Rybakina bounced back, winning five games in a row on her way to claiming the first set.
The pair held serve for the first nine games of the second before Swiatek broke decisively to force a third set.
But Rybakina, a Wimbledon champion in 2022, then broke to make it 3-2 in the third before seeing out victory with a second break.
Rybakina will contest the final against Kostyuk, who came back from 5-1 down in the opening set to beat Czech Wimbledon champion and sixth seed Vondrousova.