Movistar rider Nairo Quintana is on the brink of Giro d'Italia victory after maintaining his lead over Rigoberto Uran on the penultimate stage.
The 24-year-old leads fellow Colombian Uran by three minutes seven seconds ahead of Sunday's race into Trieste.
Australia's Michael Rogers won stage 20, from Maniago to Monte Zoncolan, ahead of Italy's Franco Pellizotti.
Another Italian, Francesco Bongiorno, was challenging Rogers for victory until he was pushed by a spectator.
The Bardiani Valvole rider was on Rogers's wheel with three kilometres to go when a fan pushed him on the back, forcing him to take his left foot off the pedal.
Bongiorno recovered to finished the stage third, ahead of Ireland's Nicolas Roche.
He said: "I'm very bitter. On a climb like that, when you lose your balance, it's impossible."
Race leader Quintana kept close to Uran on the final ascent of Monte Zoncolan, a gruelling climb of more than 10.1km.
With the final stage relatively flat, he is all but guaranteed overall victory ahead of his compatriot, with Italian Fabio Aru set to finish third.
"It's 99% done," said Quintana. "I've achieved one of the big goals in my life."
Tinkoff-Saxo rider Rogers, meanwhile, said he was "proud" to win a second stage in this year's Giro.
The 34-year-old, cleared of a drug violation in April after eating contaminated meat, added: "It's been a dream of mine to win a mountain-top finish like that."
The Giro ends with a 172km flat route from Gemona del Friuli to Trieste.
Stage 20 result:
1. Michael Rogers (Aus/Tinkoff - Saxo) 4:41:55"
2. Franco Pellizotti (Ita/Androni Giocattoli) +37"
3. Francesco Bongiorno (Ita/Bardiani Valvole) +48"
4. Nicolas Roche (Ire/Tinkoff - Saxo) +1:34"
5. Brent Bookwalter (USA/BMC Racing) +1:36"
6. Robinson Chalapud (Col/Colombia) +1:46"
7. Georg Preidler (Aus/Giant) +1:54"
8. Maxime Monfort (Bel/Lotto) +2:13"
9. Dario Cataldo (Ita/Team Sky) +2:23"
10. Simon Geschke (Ger/Giant) +2:38"
1. Nairo Quintana (Col/Movistar) 83:50:25"
2. Rigoberto Uran (Col/Omega Pharma - Quick-Step) +3:07"
3. Fabio Aru (Ita/Astana) +4:04"
4. Pierre Rolland (Fra/Europcar) +5:46"
5. Domenico Pozzovivo (Ita/AG2R) +6:41"
6. Rafal Majka (Pol/Tinkoff - Saxo) +7:13"
7. Wilco Kelderman (Ned/Belkin) +11:09"
8. Cadel Evans (Aus/BMC Racing) +12:00"
9. Ryder Hesjedal (Can/Garmin) +13:35"
10. Robert Kiserlovski (Cro/Trek) +15:49"