South Africa suffered their first home defeat in three years as France stunned the Springboks in Cape Town.
South Africa (12) 26
Pens: Montgomery 7
France (11) 36
Tries: Heymans, Clerc 2, Traille
Cons: Yachvili 2
Pens: Yachvili 2
Drops: Fritz, Traille
The French dominated the first half but were on the wrong side of the penalty count and went 12-11 behind after Percy Montgomery's four kicks.
And two more Montgomery penalties after the break and a try from Brent Russell gave the Springboks a 23-11 lead.
But two tries from wing Vincent Clerc either side of a fine solo try from fly-half Damien Traille sealed victory.
It is the first time France have won in South Africa since 2001 and their impressive display will give coach Bernard Laporte real belief that his side can challenge at the World Cup next summer.
France are the only northern hemisphere team to have recorded a victory over the course of the summer tours.
They were dynamic and incisive in the backs and they dominated up front and would have had an even bigger margin of victory but for the fussy refereeing of Stuart Dickinson.
One of the stand-out displays came from Traille, who impressed despite being asked to switch from centre to number 10.
The result will add to the uncertainty surrounding the future of South Africa coach Jake White after a Friday press conference to announce an extension to his contract was cancelled.
South Africa's unbeaten home run had extended to 13 games, their last defeat coming at the hands of New Zealand in Pretoria in July 2003.
South Africa: Montgomery; Russell, Olivier, De Wet Barry, Habana; Jaco van der Westhuyzen, Du Preez; Os du Randt, Smit (capt), Andrews; Rossouw, Matfield, Van Niekerk, Pedrie Wannenburg, Juan Smith.
Replacements: Du Toit for Habana (43), Januarie for du Preez (60).
Not Used: Botha, van der Linde, van den Berg, Cronje, Julies.
France: Laharrague; Clerc, Fritz, Jauzion, Heymans; Traille, Yachvili; Marconnet, Szarzewski, De Villiers; Pelous (capt), Thion; Betsen, Dusautoir, Harinordoquy.
Replacements: Castaignede for Traille (76), Ibanez for Szarzewski (59), Nallet for Pelous (60), Martin for Dussautoir (14), Bonnaire for Harinordoquy (55).
Not Used: Debaty, Mignoni.
Referee: S Dickinson (Australia)