Ryder Hesjedal regained the overall lead in the Giro d'Italia by finishing fourth on stage 14 as Andrey Amador won the mountain-top finish at Cervinia.
Costa Rican Amador produced a final burst of speed to edge past Jan Barta with Alessandro de Marchi third.
Canadian Hesjedal attacked on the final climb of the day and opened up enough of an advantage over Joaquin Rodriguez to take the race leader's pink jersey.
Spaniard Rodriguez lies nine seconds behind in second place.
Hesjedal was 17 seconds down on Rodriguez at the start of the wet and cold 206km stage from Cherasco to Cervinia, but finished 26 seconds ahead of the his rival after making a move inside the last four kilometres of the stage.
Rodriguez made a brief attempt to follow Hesjedal but did not have the pace to keep up.
"Liquigas were setting the tempo but they started to ease off so I decided to give it a go," said Hesjedal.
""My legs felt good. I decided to test myself - and to test the race. It worked out well."
Amador's victory was his first stage success in four years as a professional.
The 25-year-old, who has been in three breakaways during the course of the race, caught Barta after the first climb and then pulled clear himself before being reeled in on the 27km-long second climb by the Czech and Italy's De Marchi.
However, Amador had the strongest legs and he won the sprint to the finish line in five hours, 33 minutes and 36 seconds.
Manxman Mark Cavendish safely negotiated the stage within the time limit, and the Team Sky rider even extended his lead in the sprinters' red jersey competition as Australian rival Matt Goss, who had been second, withdrew from the Giro before the start of Saturday's stage.
Cavendish is now 42 points ahead of Rodrguez, while his team-mate Rigoberto Uran finished sixth on the stage to take the white jersey for the best young rider in the race.
Sunday's 15th stage sees the riders tackle a 169km run from Busto Arsizio and Lecco, with three climbs scheduled before a final 7.8km ascent above Lake Como.
The race ends on 27 May in Milan.
1. Ryder Hesjedal (Can/Garmin)
2. Joaquim Rodriguez (Esp/Katusha) at 9 secs
3. Paolo Tiralongo (Ita/Astana) at 41 secs
4. Sandy Casar (Fra/FDJ) at 1 min 5 secs
5. Ivan Basso (Ita/Liquigas-Cannondale) at 1 min 6 secs