Lucie Safarova fought back to beat Serbia's Ana Ivanovic and become the first Czech woman to reach the French Open final in 34 years.
The 13th seed trailed 5-2 in the first set but reeled off five straight games on her way to a 7-5 7-5 win.
She goes on to face world number one Serena Williams or 23rd seed Timea Bacsinszky in Saturday's final.
"It is a dream come true. I cannot believe it," said Safarova after converting a third match point.
"I started slowly but tried to keep up the level and play really aggressively because that was the only way to win.