Top seed Federer, who paved the way to a 2009 French Open title by beating Nadal in Madrid three weeks previously, could line up to repeat history after defeating Spain's hustling David Ferrer 7-5, 3-6, 6-3.
Federer won a dozen of the last 16 points as he beat Ferrer for the 10th time without a loss in little more than two hours, striking 38 winners and finishing with his eighth ace on the only match point.
"I thought I served really well tonight," Federer said. David is one of the best returners in the game - he fought like crazy. I was worried."