Koen Bouwman took his second win at the Giro d’Italia on stage 19 as Richard Carapaz kept the overall race lead.
Dutch rider Bouwman held off Switzerland’s Mauro Schmid with Italy’s Alessandro Tonelli finishing in third.
Ecuador’s Carapaz crossed the line nearly four minutes back with his general classification rivals Jai Hindley and Mikel Landa.
However, his Ineos Grenadiers team-mate and key domestique Richie Porte was forced to abandon because of illness.
With Australia’s Hindley just three seconds off the race lead, Porte’s absence may be felt during Saturday’s final mountain stage, which culminates with a daunting ascent up the Passo Fedaia on the highest peak of the Dolomites, the Marmolada.
Australian Porte, 37, who is competing in his final Grand Tour, was dropped from the peloton on the first climb of the day, the third-category Villanova Grotte, after 70km of racing.
“It’s been a pretty hard stage,” said Carapaz.
“It’s a pity that we lost Richie Porte early in the race but the team has done a great job and Pavel Sivakov is in a great shape. All top three riders, we’re together. It’s fine with me. Whatever happens tomorrow will be fine with me too.”
Sunday’s final stage is a 17.4km individual time-trial into Verona where Carapaz claimed overall victory three years ago.
Jumbo-Visma rider Bouwman, who had already won on stage seven into Potenza, saw his second triumph of the race on the 178km route into Santuario di Castelmonte arrive in bizarre circumstances.
Andrea Vendrame and Attila Valter, who were also vying for victory, badly misjudged the final corner and went into the barriers.
“After I won one stage I said anything else would be a bonus. Today I rode for the Maglia Azzurra and I’m glad I secured it,” Bouwman said.
Schmid accused Bouwman of causing the crash at the final corner, insisting it was “not a fair sprint”, but Bouwman who now also leads the Maglia Azzurra standings for the best climber, added: “I knew about the last corner but I didn’t expect it to be that sharp.
“I had to brake but it’s great that I was in the best position there. That gave me the win. I’m delighted.”
Stage 19 results
1. Koen Bouwman (Ned/Jumbo-Visma) 4hrs 32mins 55sec
2. Mauro Schmid (Quick-Step Alpha Vinyl) Same time
3. Alessandro Tonelli (Ita/Bardiani-CSF-Faizane) +3secs
4. Attila Valter (Hun/Groupama-FDJ) +6secs
5. Andrea Vendrame (Ita/Citroën) +10secs
6. Tobias Bayer (SwiAlpecin-Fenix) +2mins 45secs
7. Guillaume Martin (Fra/Cofidis) +3mins 49secs
8. Richard Carapaz (Ecu/Ineos Grenadiers) +3mins 56secs
9. Jai Hindley (Aus/Bora-hansgrohe) Same time
10. Mikel Landa (Spa/Bahrain Victorious)
General classification after stage 19
1. Richard Carapaz (Ecu/Ineos Grenadiers) 81hrs 18mins 12secs
2. Jai Hindley (Aus/Bora-Hansgrohe) +3secs
3. Mikel Landa (Spa/Bahrain Victorious) +1min 05secs
4. Vincenzo Nibali (Ita/Astana-Qazaqstan) +5mins 53secs
5. Pello Bilbao (Spa/Bahrain Victorious) +6mins 22secs
6. Jan Hirt (Cze/Intermarche-Wanty-Gobert Materiaux) +7mins 15secs
7. Emanuel Buchmann (Ger/Bora Hansgrohe) +8mins 21secs
8. Domenico Pozzovivo (Ita/Intermarche-Wanty-Gobert Materiaux) +12mins 55secs
9. Juan Pedro Lopez (Spa/Trek-Segafredo) +15mins 29secs
10. Hugh Carthy (GB/EF Education-EasyPost) +17mins 03secs