Novak Djokovic was made to work hard by Casper Ruud in blustery conditions before the world number one got past the unseeded Norwegian 7-5, 6-3 on Sunday to reach the Italian Open final.
The Serbian had to save two set points in the first set before finding his groove to reach his 10th title clash in Rome and remain on course to win his 36th ATP Masters 1000 crown and overtake Rafael Nadal on the all-time list.
He will face Diego Schwartzman in Monday's final after the Argentine held his nerve to beat Canadian youngster Denis Shapovalov 6-4, 5-7, 7-6 (4) in a dramatic second semi-final.
"It was a tough two-setter today. It was over two hours for two sets," said Djokovic, who equalled Nadal's tally of Masters 1000 titles by winning the Western & Southern Open last month.
"I definitely had to work hard for most of the points and it was really anybody's game in the first set.
"It was probably the windiest day since we arrived in Rome and it was quite tough to handle that. But the second set was much better, I got used to it and started swinging through the ball better."
Djokovic started sluggishly and trailed 4-5 in the opening set but broke back and won the final three games to take the early advantage in the contest.
The Serb, who fired 12 aces in the match, served with much better accuracy in the second set and broke to go ahead 3-2 before closing out in style.
Schwartzman, who knocked out Nadal in the quarter-finals on Saturday, will break into the top 10 of the rankings if he beats Djokovic in the title clash.
"I think if I win I'm going to be Top 10, so I just need to rest. That's why I was fighting this match because I need those points to be close to the Top 10 and to be close to Denis," Schwartzman said.
"Maybe (it will happen) tomorrow, maybe the next tournaments, but that was in my mind the whole match. I think that's why I won, because I was fighting.
"I was not playing all the match my best tennis, but I felt like I took the chances at the end and that's why I won."
Halep to meet Pliskova in Italian Open title clash
Top seed Simona Halep overcame Spaniard Garbine Muguruza 6-3, 4-6, 6-4 on Sunday to reach the Italian Open final and stay on course for her third straight WTA title.
Halep, who skipped the US Open amid the COVID-19 pandemic, won the Dubai title before the Tour was suspended and lifted the Prague crown on its resumption.
The Romanian, who is looking to extend her winning run to 14 matches and seal a first title in Rome, will next face Karolina Pliskova after the Czech beat compatriot Marketa Vondrousova 6-2, 6-4 in the second semi-final.
Halep, the 2018 Roland Garros champion cruised through the opening set and was on course for an easy win but Muguruza, who took a medical timeout for a back issue, battled back from 2-4 down to win the second set and force a decider.
Watched by a small group of fans who were welcomed back for the first time since the Tour was shut down, Halep regained focus in the third set and switched gears to surge ahead 5-1.
Muguruza was not done yet, however, as she clawed her way back to 5-4. But the 2016 French Open champion, who was serving to stay in the match, made successive double faults to gift victory to Halep.
"She's a very difficult player and a good player," Halep said.
"It's always a good feeling when I win against her.
"I know I had so many chances to maybe finish it a little bit faster and easier, but as we saw, she doesn't give up. I'm happy I was a little bit stronger and more aggressive when I needed to be."
Defending Rome champion Pliskova, knocked out in the second round of last month's US Open, said she was delighted with her form on clay.
"I feel I have more time to play my game on clay, some of my best matches, victories have been on clay," Pliskova added.
"I feel it can be for me, and with every year I prove that even more, winning smaller tournaments, indoors in Stuttgart, then Rome last year. Now I feel like I can replicate those results without huge preparation on clay."