Roman Kreuziger won the 19th stage of the Giro d'Italia as Joaquin Rodriguez's overall lead was cut to set up a dramatic final weekend.
Spain's Rodriquez saw his lead over Canadian Ryder Hesjedal shrink to 17 seconds but held onto the leader's pink jersey with two stages remaining.
A superb final climb saw Kreuziger clinch his first ever Giro stage win.
Hesjedal came second, 19 seconds further back, with Rodriguez third and Italy's Michele Scarponi fourth.
It was one of the toughest stages in this year's Giro, with five categorised climbs along the 198km route from Treviso to Val di Fiemme, including two ascents up the daunting Passo Pampeago and a third category one climb.
Another difficult test awaits in Saturday's 20th stage, with the 219km trek from Caldes ending with a 14-mile ascent up the Passo dello Stelvio, at 2757m altitude the highest point of the Tour.
The Giro finishes on Sunday in Milan.
1. Joaquin Rodriguez (Esp/Katusha)
2. Ryder Hesjedal (Can/Garmin-Barracuda) at 17 secs
3. Michele Scarponi (Ita/Lampre) at 1 min 39 secs
4. Ivan Basso (Ita/Liquigas) at 1 min 45 secs
5. Rigoberto Uran (Col/Sky Procycling) at 3 mins 21 secs.