Jennifer Capriati beat Serena Williams for the second time in a month on Tuesday to reach the semi-finals of the French Open.
The 28-year-old, French Open champion in 2001, clinched a 6-3, 2-6, 6-3 victory in a tense and scrappy match, played in light drizzle on a sodden centre court.
She will next face Russia's Anastasia Myskina, who beat Serena's elder sister Venus 6-3, 6-4 for a place in the final.
Having lost eight times in a row to Serena, Capriati beat her fellow former world number one in the semi-finals of the Rome Masters in May.
Williams, French champion in 2002, leads their head-to-head record 9-6.
Russian teenager Maria Sharapova made 40 unforced errors and went down 1-6, 3-6 to Paola Suarez of Argentina in another quarter-final.
The 14th seeded Suarez romped through to the semi-finals for the first time in her career with victory in just under an hour.
Sharapova, 17, had reached the last eight without losing a set but 19 unforced errors handed Suarez the first five games as the first set went to the Argentine in just 26 minutes.
The 18th-seeded Russian battled hard in the second set and twice led by a break but Suarez proved too consistent. She now faces either third seed Amelie Mauresmo of France or another Russian, ninth seed Elena Dementieva.