French cyclist Cedric Vasseur won a five-man sprint finish to claim the 10th stage of the Tour de France.
Vasseur announced his retirement after the race
The Quick Step rider surprised his rivals, jinking down the inside with 200m to go and then held off compatriot Sandy Casar by the width of a tyre.
Denmark's Michael Rasmussen maintained the yellow jersey as the peloton arrived at the finish line in Marseille over 10 minutes behind.
Vasseur, 36, said after the stage that he would retire after this year's Tour.
"I can now leave with my head high," said Vasseur, who also won a stage in the 1997 Tour.
"Ten years ago, I wore the yellow jersey during five days. There are signs. I knew victory could not slip from my hands today."
It was a relatively gentle stage after Tuesday's brutal day in the Alps although the riders had to battle with the fierce heat.
The winner was one of a group of 11 riders who broke away about 80km into the 229.5km journey from Tallard to Marseille.
They built a gap of about 11 minutes over the peloton before five of the 11 escaped on the penultimate climb.
The quintet, which also included Jens Voigt, Michael Albasini and Patrice Halgand, began to attack each other in the final few kilometres.
Vasseur had been reluctant to take his share of the load in the final stages and benefited when he snuck down the right of the other four as they were all looking over their left shoulders.
Sebastien Chavanel led the sprint in the peloton, crossing the line ahead of green-jersey-wearer Tom Boonen.
Rasmussen remains 2'35 ahead in the overall classification.
Shortly before the stage began, the German cycling federation said T-Mobile rider Patrik Sinkewitz, who dropped out of the Tour with injury, had tested positive for elevated levels of testosterone a month before the race began.
Stage 10 result:Tallard to Marseille, 229.5km
1. Cedric Vasseur (Fra) Quick Step 5 hrs 20 mins 24"
2. Sandy Casar (Fra) Francaise des Jeux same time
3. Michael Albasini (Swi) Liquigas same time
4. Patrice Halgand (Fra) Credit Agricole same time
5. Jens Voigt (Ger) Team CSC same time
6. Staf Scheirlinckx (Bel) Cofidis @ 36 secs
7. Paolo Bossoni (Ita) Lampre same time
8. Markus Burghardt (Ger) T-Mobile @ 1:01 secs
9. Aliaksandr Kuchynski (Blr) Liquigas @ 2:34 secs
10. Juan Antonio Flecha (Spa) Rabobank same time
11. Andriy Grivko (Ukr) Milram @ 3:42 secs
30. Michael Rasmussen (Den) Rabobanki @ 10 mins 36 secs
141. Bradley Wiggins (GB) Cofidis @ 10 mins 36 secs
147. David Millar (GB) Saunier Duval @ 10 mins 36 secs
148. Charlie Wegelius (GB) Liquigas @ 10 mins 36 secs
163. Geraint Thomas (GB) Barloworld @ 13 mins 39 secs
1. Michael Rasmussen (Den) Rabobank 43 hrs 52 mins 48 secs
2. Alejandro Valverde (Spa) C'sse d'Epargne @ 2 mins 35 secs
3. Iban Mayo (Spa) Saunier Duval @ 2 mins 39 secs
4. Cadel Evans (Aus) Predictor-Lotto @ 2 mins 41 secs
5. Alberto Contador (Spa) Discovery Channel @ 3 mins 8 secs
6. Christophe Moreau (Fra) AG2R @ 3 mins 18 secs
7. Carlos Sastre (Spa) Team CSC @ 3 mins 39 secs
8. Andreas Kloeden (Ger) Astana @ 3 mins 50 secs
9. Levi Leipheimer (USA) Discovery Channel @ 3 mins 53 secs
10. Kim Kirchen (Lux) T-Mobile @ 5 mins 6 secs
21. Alexandre Vinokourov (Kaz) Astana @ 8 mins 5 secs
76. Charlie Wegelius (GB) Liquigas @ 56 mins 45 secs
101. David Millar (GB) Saunier Duval @ 1 hr 10 mins 7 secs
151. Bradley Wiggins (GB) Cofidis @ 1 hr 34 mins 23 secs
165. Geraint Thomas (GB) Barloworld @ 1 hr 40 mins 34 secs