Novak Djokovic is one win away from a record 23rd men's major title after moving into the French Open final by beating Carlos Alcaraz in a contest ruined by an injury to the Spaniard.
With an enthralling match delicately poised at one set each, Alcaraz pulled up early in the third with cramp.
He twice carried on after treatment but Serbia's Djokovic took full advantage to run away with a 6-3 5-7 6-1 6-1 win.
Djokovic, 36, will play Casper Ruud or Alexander Zverev in Sunday's final.
Norwegian fourth seed Ruud was last year's beaten finalist, while German 22nd seed Zverev is back in the semi-finals after suffering a serious ankle injury on court at the same stage 12 months ago.