Italy's Franco Pellizotti dug deep to edge out his rivals in an uphill sprint finish to the 10th stage of the Giro d'Italia on Tuesday.
Pellizotti's stage win moves him to fourth place in the overall standings
The Liquigas rider beat Russia's Vladimir Efimkin and Kazakhstan's Serguei Yakovlev into second and third at the end of the 190km stage.
Phonak's Axel Merckx had led after attacking 15km out, but found himself overtaken in the final 200m.
Ivan Basso finished in the main peloton but retained his overall race lead.
Basso is still one minute 34 seconds clear of second-placed Jose Gutierrez.
Meanwhile, Pelizotti's first ever Giro stage win sees him move to fourth place in the overall standings, just behind former Giro winner Damiano Cunegoe.
"I won the stage and I moved close to the top spots in the standings," said Pellizotti.
"It's a great day for me."
Pellizotti managed to keep Merckx within striking range despite his early attack, and was able to keep himself at the head of the 10-rider grouping which swept past him at the final bend.
Merckx finished 11th, 13 seconds behind the leader.
"I came near to victory, now I am exhausted and disappointed," said Merckx.
"I was caught close to the finish line, but this is the sport."
Australia's Bradley McGee was forced to withdraw from the race earlier in the day.
The Francaise des Jeux rider had been struggling keep pace with a fast-moving peloton because of a suspected sciatic nerve problem after a recent crash.
McGee climbed off his bike after 60km of the stage.
Giro d'Italia stage 10 result:
1. Franco Pellizotti (Ita) Liquigas 4 hours 39 minutes 47 seconds
2. Vladimir Efimkin (Rus) Caisse d'Epargne same time
3. Sergei Yakovlev (Kaz) Liberty Seguros +2secs
4. Hubert Dupont (Fra) AG2R same time
5. Theo Eltink (Ned) Rabobank +3secs
6. Jose Luis Carrasco (Spa) Caisse d'Epargne same time
7. Marco Pinotti (Ita) Saunier Duval +5secs
8. Sven Krauss (Ger) Gerolsteiner same time
9. Alexandr Kolobnev (Rus) Rabobank same time
10. Joan Horrach (Spa) Caisse d'Epargne same time
Giro d'Italia overall standings:
1. Ivan Basso (Ita) Team CSC 39 hours 29 minutes 40 seconds
2. Jose Gutierrez (Spa) Phonak +1min 34secs
3. Damiano Cunego (Ita) Lampre-Fondital +1min 48secs
4. Franco Pellizotti (Ita) Liquigas +2mins 05secs
5 Paolo Savoldelli (Ita) Discovery +2mins 35secs
6 Serguei Gonchar (Ukr) T-Mobile Team +2mins 43secs
7 Danilo Di Luca (Ita) Liquigas +2mins 48secs
8 Gilberto Simoni (Ita) Saunier Duval-Prodir +3mins 20secs
9 Giampaolo Caruso (Ita) Liberty Seguros-Würth Team +3mins 23secs
10 Tom Danielson (USA) Discovery Channel Pro Cycling Team +3mins 31secs