Rafael Nadal was challenged in the first set by Novak Djokovic before pulling away for a 7-6 (4), 6-3 win to reach the Italian Open final on Saturday.
In their 51st meeting but first in more than a year, Nadal's court coverage eventually proved too much to handle for Djokovic, who is still regaining his form from a persistent right elbow injury.
"That was a tough battle, a good level of tennis, a combination of good tactics and great shots from both of us," Nadal said.
In the women's tournament, Elina Svitolina returned to the final with a comfortable 6-4, 6-3 win over Anna Kontaveit.
The first set alone of Nadal-Djokovic made the latest installment of the Open era's most prolific rivalry worth watching. Djokovic recovered from an early break with excellent shot-making and Nadal converted his first set point with a return winner on the line after Djokovic followed his serve to the net.
During one particularly entertaining point midway through the first set, Nadal ran down a drop shot and forced Djokovic to retreat with a smartly angled response before Djokovic came forward again to finish the point off with a volley winner.
Fans stood up and applauded them on multiple occasions.
"It was a really good quality match," Djokovic said. "I enjoyed it."
Nadal's opponent in Sunday's final will be defending champion Alexander Zverev or Australian Open runner-up Marin Cilic.
If Nadal wins his record-extending eighth Rome title, he will replace Roger Federer at No. 1.
Federer is sitting out the clay season to prepare for Wimbledon.
After losing the first set tiebreak, Djokovic started shouting at his support box in an apparent discrepancy over tactics — then did it again on the next changeover.
Nadal got an early break in the second set and never looked back.
Djokovic noted that at 3-3 in the tiebreak he had to go play against the wind, "which is a huge difference" when playing Nadal.
"Those are the little details in tennis that only players and people who were on the court know," Djokovic said.
Still, this was Djokovic's best performance of the year.
"I played four matches here and I didn't expect anything coming into this tournament," Djokovic said. "I'm pleased with how I played the last three days — very pleased — and hopefully Roland Garros can be a continuation of this run."
Aiming for the third title defense in her career, Svitolina will face either top-ranked Simona Halep or three-time Rome champion Maria Sharapova in Sunday's championship match on the red clay of the Foro Italico.
"I'm happy with the way I handled today under pressure and all this week," Svitolina said. "I know there is one match to go and I will give it my best shot tomorrow."
The fourth-ranked Svitolina produced only 18 winners to Kontaveit's 24 but also committed fewer unforced errors — 13 to 20 — in a match that lasted 74 minutes.
"I was really solid with my performance and I was really proud that I could stay consistent for the entire match," Svitolina said.
Kontaveit, an Estonian, could still be pleased with a week that saw her eliminate four established players: 12th-seeded CoCo Vandeweghe, two-time finalist Svetlana Kuznetsova, 1999 champion Venus Williams and second-seeded Caroline Wozniacki.
"She was really tough today and played great," Kontaveit said. "So I'm just taking the positives from this week."
Halep and Sharapova were meeting later on a warm day in the Italian capital, after Rafael Nadal and Novak Djokovic resume their rivalry.
In the other men's semifinal, it's defending champion Alexander Zverev against Marin Cilic.
In last year's final, Svitolina came back to beat Halep after the Romanian rolled her ankle.
This is the last major warm-up before the French Open starts next weekend.