Kei Nishikori fought back from a set down to beat Alexander Zverev 3-6, 6-3, 6-4 in the Monte Carlo Masters semi-finals on Saturday to set up a showdown with Rafael Nadal.
The Japanese player moved into his first Masters final since Canada in 2016 after struggling with a right wrist injury that forced him to miss the last four months of last season.
But the former world number four, now ranked 36, did enough to wear down a tired Zverev who came through a late-night thriller with Richard Gasquet on his 21st birthday on Friday.
Nishikori is yet to win a Masters title in three previous final appearances, including one against Nadal in Madrid four years ago when he led by a set and a break before retiring injured.
He won his last match against Nadal in the 2016 Olympic bronze-medal match, but has never beaten the 10-time Monte Carlo champion on clay.
Nadal reached his 12th final in Monte Carlo earlier Saturday by seeing off Grigor Dimitrov 6-4, 6-1.
Third seed Zverev broke through in the seventh game and wrapped up the first set with relative comfort.
Nishikori hit back early in the second to move 2-0 ahead, but Zverev refocused and drew level.
The Japanese reeled off four straight games to force a decider, though, as Zverev failed to secure a first straight-sets win of the week.
Both players saved two break points in their first service games of the third set, before solidifying their serves as the set became a battle of attrition.
But Nishikori brought up a match point in the 10th game with a body shot at the net, and German Zverev scooped a backhand wide to send the 28-year-old through to Sunday's final.