World number one Novak Djokovic on Saturday battled past Italian Lorenzo Sonego to set up a clash with nine-time winner Rafael Nadal for the sixth time in the Italian Open final.
Defending champion Djokovic won 6-3, 6-7 (5/7), 6-2 in two hours and 44 minutes against the 33rd-ranked Italian after second seed Nadal earlier swept past American Reilly Opelka 6-4, 6-4.
Djokovic had earlier survived a three-set battle with Greece's Stefanos Tsitsipas in their rain-delayed quarter-final.
The five-time Rome champion had been trailing 6-4, 2-1 when the tie was halted overnight. But the 33-year-old came back to win 4-6, 7-5, 7-5 after more than three-and-a-quarter hours.
Djokovic and Nadal, who will be facing each other for the 57th time, last played in the 2020 French Open final which the Spaniard won in straight sets.
The pair have won 14 of the last 16 Rome titles between them, while Nadal leads their head-to-head in finals in the Italian capital 3-2.
"Rafa and I had a little laugh today in the locker room after I won against Tsitsipas," Djokovic revealed.
"We kind of joked around about that the 'Old guys are still not giving up'. I'm really glad we've shown we're not backing off from the Next Gen attacks."
Nadal saved two match points to defeat Canada's Denis Shapovalov in the third round, and then ousted Madrid Open slayer Alexander Zverev in the quarter-finals.
"I saw he said a few days ago that Roger (Federer), him and I are old, but I disagree, I think we're showing some different fresh energy," said the Serbian.
"It's great to play him again in the final.
"He's the guy that I have encountered the most in my career, definitely my biggest rival of all time."
On Saturday, Djokovic let two match points slip in the second set of his semi-final.
He then saved three break points in the first game of the third set, before powering towards his 11th Rome final.
"I've only myself to blame for not closing the match in the second set, I could have and should have," said Djokovic.
Nadal staved off break points in the fourth game against Opelka and did not look back.
"Another chance to play on a big stage, in a big final," said Nadal. "It's important for my confidence to be back in a final."
Nadal is looking to equal Djokovic's record of 36 Masters 1000 titles in his 12th Rome final, while his opponent would pull two clear with a win.
Two weeks before Roland Garros, the 34-year-old was rarely troubled by the towering American playing his first Masters semi-final.
Nadal blasted down 11 aces and did not drop serve against the 47th-ranked player who had not been broken all week.
A break in either set was enough to see Nadal through in his final warm-up tournament before Roland Garros, having exited early in Monte Carlo and Madrid.
"You want to win, not because in two weeks you're going to have an important event," said the 13-time French Open champion.
"In terms of preparation for Roland Garros, I consider the job done because I have been through a positive process during the last month.
"This is about Rome, one of the most important events in the history of my career."
In the women's final, French Open champion Iga Swiatek takes on former Rome winner Karolina Pliskova.
Ex-world number one Pliskova saw off Croatia's Petra Martic 6-1, 3-6, 6-2 to return to the final of a tournament she won in 2019 and finished runner-up at last year.
Swiatek, 19, claimed back-to-back wins on the day.
She first ousted fifth seed Elina Svitolina, a two-time Rome winner, 6-2, 7-5 in their quarter-final which had been pushed back from Friday because of rain.
She then saw off 17-year-old American Coco Gauff 7-6 (7/3), 6-3 in the semis.
"Beating Elina shows that my game is here, I'm ready for anyone," said the Polish 15th seed.
Swiatek is looking for just her third WTA title having followed her Roland Garros success with a win in Adelaide in January.