Defending champion Novak Djokovic and Rafa Nadal will clash for the Italian Open title after the top two seeds advanced to the final of the Masters tournament on Saturday.
Djokovic, who beat Greek Stefanos Tsitsipas 4-6 7-5 7-5 in a rain-delayed quarter-final earlier in the day, was also stretched to three sets in the semi-final before overcoming local favourite Lorenzo Sonego.
Sonego, the first Italian to make the semi-finals in Rome in 14 years after he beat world number seven Andrey Rublev earlier on Saturday, had his dream run ended by Djokovic who triumphed 6-3 6-7(5) 6-2.
Djokovic failed to convert two match points in the second set that lasted 91 minutes as Sonego forced a tiebreak, where the Serb lost a 4-2 lead.
However, the world number one controlled proceedings in the decider and advanced after Sonego's return on match point found the net.
Earlier, Nadal beat Reilly Opelka 6-4 6-4 to move into the final in Rome for the 12th time.
The match was Nadal's 500th on clay where he has a formidable 458-42 record and the Spaniard advanced after twice breaking the big-serving American.
"When you play these kind of matches, you know it's not going to be a beautiful match... you're not going to find rhythm in the match. You're going to have just a few chances to break," Nadal told reporters.
"It's important not to suffer much with your serve because if you are... you feel the stress all the time. So the positive thing today, I just faced break points in one game during the whole match."
Djokovic was trailing Tsitsipas 6-4 2-1 when Friday's quarter-final was halted by rain but the Serb raised his game at key moments to twice come back from a break down in the deciding set.
Djokovic has a 29-27 career record against Nadal but the Spaniard has won five of their eight matches in Rome.