Giovanni Visconti took his second stage win in four days as Italy's Vincenzo Nibali maintained overall control of the Giro d'Italia after stage 17.
Mark Cavendish's bid for a fifth stage win in this year's race disappeared on the climb up Crosara near the finish.
But the Briton stays in the red jersey as leader of the points classification.
Visconti, who won on the Galibier on Sunday, attacked on the late climb and held off a chasing group containing Nibali to win by 19 seconds.
Manxman Cavendish picked up four points in intermediate sprints during the stage but his lead over his nearest rival Cadel Evans was trimmed from six points to four after the Australian finished 10th in Vicenza.
"When I saw the last 20km of the stage on our way to the finish on Wednesday morning, I thought it was going to be very tough for Mark Cavendish to take the stage win.
"It was just the last 2km of the climb that finished him. I spotted him, about 15 from the front about two-thirds of the way up after a section where the gradient went up to 12% but doing that must have just put his energy reserves in the red. His legs dropped off and the next time I saw him, which wasn't long afterwards, he was already out the back of the group he was in.
"He had some team-mates with him and some recovery time on the way down but everyone in front of them was going so quickly that it was very difficult for them to make up the gap that had opened up. They went over the top about 90 seconds behind Giovanni Visconti and held that to the finish which was a very good effort, considering they were not getting any help.
"As for the stage win, I thought there was no way Visconti would hold on all the way to the end but hats off to him. He walked through the crowd and into the press area a few minutes after the race and he got an absolutely amazing reception."
Cavendish fought hard to remain in contention on the short but steep fourth category 5km climb up Crosara, which came 22km from the end of the 214km [132.9 mile] stage, but in the end did not have the legs to stay with the leaders.
He was near the front of the peloton until halfway up but ended up losing ground and could not make it up on the descent or on the flat run-in into Vincenza, even with the help of four of his Omega Pharma-Quick Step team-mates.
With the race now heading back to the mountains and into the Dolomites, Cavendish's chances of winning the red jersey rest on how Evans fares over the next three days, before Sunday's flat final stage in Brescia.
Asked if he had any regrets about how stage 17 had gone, Cavendish replied: "No. There was nothing we could have done more.
"There are those climbs that put sprinters on limit and those climbs that are just too hard and that was one of them today.
"We knew it was going to be hard but we thought we would try anyway. It was hard, and I cracked on the climb.
"The guys stayed with me and we went for it until the last bend but, once we were in the second group, no-one was going to help us. It was a deserved win for Giovanni Visconti."
Visconti, who clinched his first Grand Tour victory when he won stage 15 in the snow on the Galibier on Sunday, sealed a third-straight success for his Movistar team in the sunshine.
The 30-year-old Sicilian, a three-time national champion, timed his attack to perfection to burst off the front of the peloton and overhaul Danielo Di Luca and Miguel Angel Rubiano, the Colombian who was the last survivor of a four-man break that had escaped after 6km.
Ramunas Navardauskas took second in a group sprint, 19 seconds back, with Nibali finishing safely in the pack to stay ahead overall.
Nibali leads Australian Cadel Evans by one minute and 26 seconds.
The Giro now moves back into the high mountains, starting with a a 20.6km individual uphill time trial on Thursday.
Stage 17 result:
1. Giovanni Visconti (Italy/Movistar) 5:15:34"
2. Ramunas Navardauskas (Lithuania/Garmin) +19"
3. Luka Mezgec (Slovenia/Argos) SAME TIME
4. Filippo Pozzato (Italy/Lampre)
5. Danilo Hondo (Germany/RadioShack)
6. Salvatore Puccio (Italy/Team Sky)
7. Sacha Modolo (Italy/Bardiani Valvole)
8. Fabio Felline (Italy/Androni Giocattoli)
9. Francisco Ventoso (Spain/Movistar)
10. Cadel Evans (Australia/BMC Racing)
General classification after stage 17
1. Vincenzo Nibali (Italy/Astana) 73:11:29"
2. Cadel Evans (Australia/BMC Racing) +1:26"
3. Rigoberto Uran (Colombia/Team Sky) +2:46"
4. Michele Scarponi (Italy/ Lampre) +3:53"
5. Przemyslaw Niemiec (Poland/Lampre) +4:13"
6. Mauro Santambrogio (Italy/Vini Fantini) +4:57"
7. Carlos Betancur (Colombia/AG2R) +5:15"
8. Rafal Majka (Poland/Saxo - Tinkoff) +5:20"
9. Benat Intxausti (Spain/Movistar) +5:47"
10. Robert Gesink (Netherlands/Blanco) +7:24"