Rome - World No 1 Novak Djokovic saved two match points against former US Open champion Juan Martin Del Potro to advance to the semi-finals of the Italian Open in a three-set Roman thriller on Friday as defending champion Rafael Nadal swept through without dropping a set.
But Swiss star Roger Federer and women's world number one Naomi Osaka both pulled out injured from the last warm-up tournament before the French Open starting in just over a week.
Djokovic saved match points in the second set tie-break before winning through 4-6, 7-6 (8/6), 6-4, sealing victory with an ace on his first match point after a three-hour battle.
"I had luck in the decisive moments in the second set tiebreak," said the 31-year-old.
"Towards the end of the first set he just started hitting the ball really well from both corners.
"Also backhand side, backhand down the line. He was playing really well. Gave me a lot of trouble. But I never lost faith," the four-time Rome winner said.
"I'm just really pleased to overcome."
Del Potro had pulled out of Indian Wells and Miami with a knee injury, but matched Madrid Open winner Nadal shot for shot, wrapping up the first set 6-4 in just over an hour.
The world No 9 received treatment on a bloodied big toe after Djokovic levelled one-set all.
But he kept up the pressure with Djokovic again needing to save three break points on his serve in the fourth game of the final set before breaking for 3-2 as the momentum swung his way.
The 15-time Grand Slam winner next plays Argentine Diego Schwartzman, who eliminated Japanese sixth seed Kei Nishikori 6-4, 6-2.
Eight-time Rome champion Nadal eased through 6-4, 6-0 against fellow Spaniard Fernando Verdasco to set up a rematch with Greek rising star Stefanos Tsitsipas for a place in the final.
Tsitsipas advanced after Federer - returning to clay after a two-year absence-- retired with a right leg injury before their game.
For 32-year-old Nadal it is his fourth straight semi-final on clay this season, but he has not managed to go further before his bid for a 12th French Open title at Roland Garros.
Tsitsipas stunned Nadal in last week's Madrid Open semi-finals before falling to Djokovic, but lost to the Spaniard in the Australian Open semis earlier this year.
"After a lot of years here, I know what happened last week, and I'm going to try to do it better tomorrow," said 17-time Grand Slam winner Nadal.
Reigning US and Australian Open champion Osaka withdrew with a stiff right hand giving Madrid Open winner Kiki Bertens a ticket to the semi-final.
"I woke up this morning and I couldn't really move my thumb," the 21-year-old said.
"I'm not mad, but between sad and disappointed," added Osaka, who still hopes to compete at Roland Garros.
Sixth seed Bertens now goes through to meet Britain's Johanna Konta, who battled past Czech Marketa Vondrousova 6-3, 3-6, 6-1.
Federer, a quarter-finalist in Madrid, was playing in the Italian capital to prepare for his return to the French Open for the first time since 2015.
"I am not 100 percent physically and after consultation with my team, it was determined that I not play," he said.
The 20-time Grand Slam champion had been on court for nearly four hours on Thursday, saving two match points to win through in three sets against Borna Coric after earlier easing to a straight sets win over Portugal's Joao Sousa.
The former world No 1 had been a late addition to the Rome tournament as he sought clay-court practice ahead of his bid to add to his lone French Open title from 2009.
In a battle between former women's world number ones, Karolina Pliskova won through against Victoria Azarenka 6-7 (5/7), 6-2, 6-2.
The Czech fourth seed next plays Maria Sakkari of Greece who also needed three sets to get past France's Kristina Mladenovic 5-7, 6-3, 6-0.
Pliskova and Sakkari last met in the second round at the Foro Italico when the Czech, furious at a line call, smashed a hole in the umpire's chair after losing in three sets.
Results from the ATP and WTA Italian Open in Rome on Friday (x denotes seeding):
Diego Schwartzman (ARG) bt Kei Nishikori (JPN x6) 6-4, 6-2
Stefanos Tsitsipas (GRE x8) bt Roger Federer (SUI x3) -- walkover
Rafael Nadal (ESP x2) bt Fernando Verdasco (ESP) 6-4, 6-0
Kiki Bertens (NED x6) bt Naomi Osaka (JPN x1) -- walkover
Johanna Konta (GBR) bt Marketa Vondrousova (CZE) 6-3, 3-6, 6-1
Karolina Pliskova (CZE x4) bt Victoria Azarenka (BLR) 6-7 (5/7), 6-2, 6-2
Maria Sakkari (GRE) bt Kristina Mladenovic (FRA) 5-7, 6-3, 6-0