Williams, however, was sent home by Sesil Karatantcheva, 6-3, 1-6, 6-1. Williams had 52 unforced errors and suffered nine service breaks.
For the third time in as many matches, Davenport was taken to three sets. She finally overcame Virginie Razzano, 7-5, 4-6, 6-4.
"I'm starting to think that it could be one of my, not my best, but one of my greatest achievements in a while just to be able to still be here and still be playing," Davenport said.
She will next meet Kim Clijsters, who defeated Daniela Hantuchova, 6-4, 6-2.
Federer, ranked No. 1 in the world, and Nadal, who has won 20 straight clay-court matches, are on a collision course for the semifinals.