The Swiss star won three titles in five hardcourt tournaments this season, including the Australian Open, but made his ATP clay debut with a second-round effort last week at the Italia Masters.
With two Davis Cup wins on clay, he improved to 7-1 on the surface this season.
Federer snapped Moya's nine-match winning streak. He will try to extend his career-best 30-3 start Saturday when he takes on No. 17 Lleyton Hewitt in the semifinals.
Hewitt cruised past Austrian Jurgen Melzer, 6-4, 6-3.
Second seed Guillermo Coria recorded his 30th straight clay victory with a 6-2, 6-2 rout of David Ferrer. The defending champion will take on Ivan Ljubicic, who rallied past Mikhail Youzhny, 4-6, 7-5, 6-1.