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.