Richard Carapaz is on the brink of winning the Giro d'Italia after retaining the pink jersey.
Astana rider Pello Bilbao beat Mikel Landa in the final 200-meter sprint to the line to win the 20th stage, with Trek-Segafredo's Giulio Ciccone third.
Movistar rider Carapaz was fourth and now looks set to take the title on Sunday, barring a major surprise in the time trial at Verona.
In Saturday's penultimate stage in the Dolomites, Carapaz held off two-time champion Vincenzo Nibali in the 194-kilometre ride from Feltre, and holds a cushion of one minute and 54 seconds over the Italian.
Landa climbed to third on general classification, two minutes and 53 seconds back, after Primoz Roglic was dropped on the final climb, and is a further 13 seconds adrift.
Speaking to Eurosport, Bilbao said: "It was more difficult to be here in first when Vincenzo's group arrived. I thought my stage was almost finished but they went with a lot of energy."
A highlight of the stage involved Astana rider Miguel Angel Lopez who was filmed in an altercation with a fan who apparently caused him to crash on a climb.
Lopez remonstrated with the man, who was sat on the floor, and twice lashed out, sending his cap flying.
On Eurosport Sir Bradley Wiggins defended Lopez but also understands why the incident happened.
He said: "They (the fans) can be forgiven for forgetting themselves. We can't take the spectators off the mountain, it's what makes the race so special.
"We have to accept it (spectators on the course). We can only ask people to respect the riders.
"When you've had a couple of drinks you can forget and get carried away.
"But this is their careers, they have stuff riding on this. I can sympathise with him (Lopez), that would be your initial reaction. We can't berate him for giving him a smack."
Great Britain's Simon Yates finished off the pace, with the Mitchelton-Scott rider eighth in the GC, eight minutes and one second adrift.