Carlos Sastre claimed his second Giro d'Italia stage win of the week, sealing his victory with an impressive climb up Mount Vesuvius.
The Spaniard made his break around halfway up the final climb to finish the 19th stage 20 seconds ahead of Italy's Franco Pellizotti, while Danilo Di Luca pipped Denis Menchov to third.
Menchov leads Di Luca by 18 points in the overall standings with two stages remaining.
Yuriy Krivtsov and Mauro Facci were first to make a move in the early stages, establishing a lead of as much as seven minutes through the first 60km.
At the midway point, Lance Armstrong was part of a group of riders who fell and, although he climbed back on his bike to finish the race just outside the top 10, suffered some bruising to his left arm.
Facci and Krivtsov held onto their lead despite an attack by Andriy Grivko up the climb of the Picco Sant Angelo.
The leaders were finally caught in the closing 15km as the riders began the ascent up Vesuvius.
Several riders attacked before Cervelo rider Sastre joined Ivan Basso in the lead with around 5km to go.
As Sastre pulled away, Pellizotti moved into second while a battle developed for third, with Di Luca finally outsprinting Menchov.
Leading final positions after stage 19:
1 Carlos Sastre (Spa) Cervelo Test Team 4hrs 33mins 23secs
2 Franco Pellizotti (Ita) Liquigas at 0.21
3 Danilo Di Luca (Ita) LPR Brakes - Farnese Vini at 0.30
4 Denis Menchov (Rus) Rabobank at same time
5 Ivan Basso (Ita) Liquigas at 0.35
6 Levi Leipheimer (USA) Astana at 0.53
7 Tadej Valjavec (Slo) AG2R La Mondiale at 1.14
8 Serge Pauwels (Bel) Cervelo Test Team at 1.15
9 Jose Serpa (Col) Serramenti PVC Diquigiovanni-Androni Giocattoli at same time
10 Stefano Garzelli (Ita) Acqua & Sapone - Caffe Mokambo at same time
General classification after stage 19:
1 Denis Menchov (Rus) Rabobank 81hrs 13mins 55secs
2 Danilo Di Luca (Ita) LPR Brakes - Farnese Vini at 0.18
3 Franco Pellizotti (Ita) Liquigas at 1.39
4 Carlos Sastre (Spa) Cervelo Test Team at 2.40
5 Ivan Basso (Ita) Liquigas at 3.33
6 Levi Leipheimer (USA) Astana at 4.55
7 Stefano Garzelli (Ita) Acqua & Sapone - Caffe Mokambo at 8.48
8 Michael Rogers (Aus) Team Columbia - Highroad at 9.32
9 Tadej Valjavec (Slo) AG2R La Mondiale at 10.42
10 Marzio Bruseghin (Ita) Lampre - N.G.C. at 11.32