Rafael Nadal remained on course for a seventh ATP Rome Masters title after triumphing against compatriot David Ferrer once again, 6-4 4-6 6-2.
The former world No 1 extended his winning streak over Ferrer to 16 matches to come through in two hours and 46 minutes on centre court at the Foro Italico.
It was Nadal's second win over Ferrer inside a fortnight after his quarter-final victory over him on his way to the Madrid Masters title last week.
And after winning the opening set the defending French Open champion seemed to be on his way to a comfortable victory, but Ferrer had other ideas and turned the contest into a slug-fest.
Fourth-seeded Ferrer fought back valiantly in the second set by taking the game to his opponent, but there was an inevitability about proceedings as Nadal broke at the start of the decider and walked off the winner.
"I played a great match against a difficult opponent, so this victory for me is very special," said Nadal.
The fifth-seed from Mallorca is on course for a third straight title after victories in Barcelona and Madrid.
He will next meet Tomas Berdych for a place in the final on Saturday after the Czech upset Novak Djokovic.
Meanwhile, 36th-ranked French surprise package Benoit Paire continued his good run of form by qualifying for his first Masters semi-final with a 6-1 6-0 win over Spaniard Marcel Granollers.
He will next face Roger Federer after he came through 6-4 7-6 (7/2) against big-hitting Pole Jerzy Janowicz.
Federer wrapped up the first set comfortably but in a tighter second set the 31-year-old Swiss ace was forced into a series of unforced errors by the service game of the giant 23-year-old from Lodz.
Janowicz built a 5-4 lead in the second but then squandered a chance to level the match when he made two double faults in the 10th game.
Federer, who is looking to win in Rome for the first time in his career, fought back to level at 6-6 and dominated 24th-ranked Janowicz in the tie-break.