Sastre left it late before grabbing his first stage win of the 2009 Giro
Spain's Carlos Sastre staged a stunning late charge to win the 16th stage of the Giro d'Italia on Monday.
Russian Denis Menchov finished second to stay top of the overall standings after the 237km leg from Pergola to Monte Petrano in the Appenines.
Cervelo's Sastre, the 2008 Tour de France winner, reeled in Ukrainian Yaroslav Popovych as he faded on the final climb of a tough stage.
He won in seven hours 11 minutes and 54 seconds to move up from fifth to third.
Popovych had looked set to triumph when he left fellow escapees Damiano Cunego and Gabriele Bosisio of Italy behind on the last descent.
But Sastre, 34, took advantage as he ran out of steam in 37C temperatures to claim a superb win - his first-ever in the Giro.
He said: "Today was important. We've got some important stages in front of us. This was one of the hardest of the Giro but I'm here to give my all. I'm here to fight to try and win."
Rabobank's Menchov outsprinted Italian duo Danilo Di Luca and Ivan Basso to clinch second.
The final 10.4km climb put paid to American Levi Leipheimer's hopes of sealing a win.
Despite help from his Astana team-mate, seven-time Tour de France champion Lance Armstrong, Leipheimer finished almost three minutes behind Sastre to drop from third to sixth overall.
Armstrong came home in 10th, directly in front of Leipheimer, and climbed from 13th to 12th overall, 11:06 behind Menchov.
With five days of racing to go, Menchov continues to lead by 39 seconds from Di Luca, with Sastre two minutes 19 seconds adrift.
After a rest day on Tuesday, the Giro resumes on Wednesday with another uphill finish in a short 83km stage from Chieti to Blockhaus.
Stage 16 results (Monday):
1. Carlos Sastre (Spa/Cervelo) 7hrs 11mins 54secs
2. Denis Menchov (Rus/Rabobank) +25
3. Danilo Di Luca (Ita/Team LPR) +26
4. Ivan Basso (Ita/Liquigas) +29
5. Stefano Garzelli (Ita/Acqua & Sapone) +1:19
6. Francesco Masciarelli (Ita/Acqua & Sapone) +1:21
7. Franco Pellizotti (Ita/Liquigas)
8. Tadej Valjavec (Slo/AG2R) +2:11
1. Denis Menchov (Rus/Rabobank) 70hrs 06mins 30secs
2. Danilo Di Luca (Ita/Team LPR ) +39
3. Carlos Sastre (Spa/Cervelo ) +2:19
4. Franco Pellizotti (Ita/Liquigas ) +3:095.
5. Ivan Basso (Ita/Liquigas ) +3:19
6. Levi Leipheimer (US/Astana ) +3:21
7. Michael Rogers (Aus/Columbia ) +5:54
12. Lance Armstrong (US/Astana) +11:06