Novak Djokovic overcame a first-set scare to defeat Casper Ruud 7-5 6-3 and reach a 10th final at the Internazionali d'Italia.
The world number one remains on course for a record-breaking 36th ATP Masters 1000 title but was forced to save two set points in the opener against Norway's Ruud.
Djokovic will contest Monday's final against Denis Shapovalov or Diego Schwartzman, who stunned Rafael Nadal in the quarter-finals to end the clay court maestro's similar designs on title 36 in the highest tier of ATP Tour events.
Ruud has impressed on clay this season, boasting a tour-leading 12 wins on the red stuff.
The 21-year-old was targeting a third final in four events on the surface and pocketed an early break before staying cool under pressure on the forehand side to repel two break-back points at 3-2.
It meant Ruud served for the set at 5-4 but he was unable to convert as Djokovic got back on terms with a fabulous drop shot winner.
The 17-time grand slam champion shut the door on Ruud three times during a 12-minute 11th game and the pressure told on his opponent, with a misfired forehand conceding the set.
Djokovic then put his foot down with some authoritative ground strokes to break for 4-2 in the second.
He continued to batter Ruud to the forehand corner and completed the victory in two hours and 11 minutes.
An imperious 30-1 record in 2020 must now be set alongside Djokovic's less-than-impressive recent efforts in the Rome showpiece.
Despite being a four-time winner in the Italian capital, defeats to Andy Murray, Alexander Zverev and Nadal mean he has finished as runner-up in three of the past four years.