The 34-year-old Frenchman has now reached his first ATP final for the season.
Ranked 38 in the world, Simon lost the first set but went on to win 6-7 (4-7) 6-4 6-3 in a game which ran for longer than two and a half hours.
The match will have been a particularly gruelling one for Simon after he needed three hours and 20 minutes to beat Nicolas Mahut i nteh quarter-finals, the longest match in the tournament's history.
Murray and Salisbury pull off major upset at Olympics
"It was hard to recover for this one," admitted Simon.
"It was tough until the end with long rallies. It was a tough match. But you relax a bit when you're really tired and you've played a long match."
Simon is due to play the winner of Felix Auger-Aliassime and Spaniard Feliciano Lopez in Sunday's final.
French Open LIVE - Osaka, Sabalenka, Evans and Tsitsipas all in action
'Heart is not in it' - Simon taking a break for mental health reasons