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 cramps for the Spaniard.
With an enthralling match delicately poised at one set each, Alcaraz pulled up early in the third with the issue.
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 will face Casper Ruud, who beat Alexander Zverev, on Sunday.
Norwegian fourth seed Ruud, who lost to Rafael Nadal in last year's final, won 6-3 6-4 6-0 against German 22nd seed Zverev.