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 lost to Zverev in the Madrid last-eight last week, but ended his three-match losing streak against the German in the Foro Italico.
"It was an important victory for me against a great player," said the Spaniard.
The 34-year-old shook off his marathon 3hr 30min quarter-final battle past Denis Shapovalov on Thursday 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 next plays big-serving 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.
"It's a big challenge against a player who's playing well and has almost an unreturnable serve," Nadal said of Opelka who has not dropped a set all week.
"I've served well especially at big moments, that's been key, I stayed calm," said Opelka, who has hit nearly 80 aces this week.
"I've made some adjustments on my serve recently and it has paid off."
Nadal is two wins away from equalling Novak Djokovic's record of 36 ATP Masters 1000 titles.
He is also attempting to win 10 or more titles at a single event for the fourth time, after Roland Garros (13), Barcelona (12) and Monte Carlo (11).
Zverev, 24, had been on a seven-match winning streak, following his second title run in Madrid last week.