Nine-time champion Rafael Nadal dispatched his Madrid Masters slayer Alexander Zverev 6-3, 6-4 to reach the Italian Open semi-finals on Friday.
Second-seed Nadal had lost to Zverev in Madrid last-eight last week.
But the 34-year-old Spaniard shook off his marathon 3hr 30min quarter-final battle past Denis Shapovalov where he needed to save two match points.
Nadal powered to 4-0 before sixth seed Zverev held serve with the 20-time Grand Slam winner saving break point to take the first set.
The German rallied in the second set but Nadal saved eight break points to seal victory on his first match point after two hours.
Nadal plays American Reilly Opelka for a place in the final for an 11th time as he warms up for the French Open starting on May 30.
Opelka, ranked 47, reached his first Masters semi-final with a 7-5, 7-6 (7/2) win over Argentine qualifier Federico Delbonis.