Rafael Nadal secured his place in the Italian Open final with a 6-4 6-4 win over American Reilly Opelka.
At 2-1 down in the first set Nadal had to save four break points, but he then broke his big-hitting rival in the next game before going on to claim the set.
One break of serve was also enough for the 34-year-old Spaniard in the second set as he secured victory in Rome.
Nadal will play world number one Novak Djokovic, who beat Italian Lorenzo Sonego 6-3 6-7 (5-7) 6-2, in the final.
Djokovic was on court twice on Saturday as he came from a set down to beat Greece's Stefanos Tsitsipas in their rain-affected quarter-final before playing Sonego after Nadal's match.
Against Tsitsipas, the Serb trailed 6-4 2-1 when the match was suspended because of rain on Friday, but he broke serve twice when it resumed on Saturday to force a decider.
He then twice recovered from a break down in a see-saw final set to win 4-6 7-5 7-5 and reach the last four.
- Swiatek to play Pliskova in Rome final
- Murray chooses to miss French Open
- Injury concerns for Barty and Halep before French Open
Sonego had also been in action on Saturday as he beat Andrey Rublev 3-6 6-4 6-3 to set up the semi-final with Djokovic.
Nevertheless, the pair produced an enthralling match lasting two hours and 44 minutes.
Djokovic had served for the match at 6-5 up in the second set against 26-year-old Sonego only to be broken.
He was then 3-0 up in the tie-break but lost 7-5 as an inspired Sonego levelled after a second set which lasted 91 minutes.
However, Djokovic reasserted himself in the third before eventually prevailing to set up a sixth Italian Open final against Nadal.
"Rome is such an important tournament for me. To be in the final again is so important for me," said Nadal.
"In terms of preparation for [the French Open at] Roland Garros, I consider the job done. Tomorrow is not at all preparation. It's a final, an important one, and I want to be competitive."
Great Britain's Salisbury into first Masters final
Britain's Joe Salisbury reached his first Masters final after two victories in one day with doubles partner Rajeev Ram.
Last year's Australian Open champions beat fourth seeds Marcel Granollers of Spain and Argentine Horacio Zeballos 7-6 (7-3) 3-6 10-2 in a match held over from Friday because of rain.
They then won 6-4 6-4 against El Salvador's Marcelo Arevalo and Dutchman Matwe Middelkoop.
Salisbury and American Ram will face Croatian's Nikola Mektic and Mate Pavic in Sunday's final.
- Salford's 'Mr Big': Paul Massey's rise in the criminal underworld through violence and extortion
- Dive into 2010s nostalgia with our quiz: How much do you remember about music from the last decade?