Federer has made the final in Rome three times in the past 12 years but been beaten on every occasion – twice by Nadal and once by Felix Mantilla, in 2003.
The 33-year-old could now meet seven-time champion Nadal in the last four if the Spaniard overcomes Swiss player Stan Wawrinka in their semi-final later on Friday.
The old foes have met 15 times on clay with Nadal leading Federer 13-2 on his favoured red surface.
“From the baseline I was playing very well.” Federer said. “My serve was not quite there from the beginning. I was hitting too many second serves and he was able to take advantage of that and break early. So it was important to pick it up on the serve, which is maybe the easiest thing to do.
“I felt good again on the return and (was) moving well, so as the match went on I got better and better,” he added. “The wind picked up in the second set ??that’s when I think Tomas didn’t play so well anymore and I was able to get the job done.”
Ferrer to meet Djokovic
Earlier, Spain’s David Ferrer set up a semi-final clash with world No 1 Novak Djokovic after disposing of Belgian qualifier David Goffin 6-2 4-6 6-3.
Goffin, who had stunned Jo-Wilfried Tsonga in the second round, had advanced to the last eight of the competition with a walkover after third-round opponent Andy Murray withdrew on Thursday citing fatigue.
But despite levelling the match by winning the second set, the 24-year-old from Liege was overcome by his more experienced Spanish rival in the decider.
Ferrer, a French Open finalist in 2013 when he was beaten by compatriot and good friend Nadal, has never triumphed in Rome, although he reached the final in 2010 when he was again beaten by Nadal.
He now takes on defending champion Djokovic after the Serb accounted for Japan’s Kei Nishikori, despite being pushed to three sets for the third consecutive match in a 6-3 3-6 6-1 win.
Djokovic was also pushed the distance by Nicolas Almagro and Thomaz Bellucci in his opening two matches. Still, he extended his winning streak to 20 matches.