At the front of the race, Pierre Rolland (Cannondale-Drapac) had chased onto the leaders and crested the second summit – the Selvino – first, but the rapid and technical descent claimed some victims behind.
Davide Formolo (Cannondale-Drapac) was among those to crash, as was Kenny Elissonde (Team Sky), with the high tempo cutting the gap to the leaders to just 30 seconds.
More disaster struck as the 10km-to-go mark approached, with Astana’s GC man Tanel Kangert – so impressive at times during the second week – crashed out of the race after colliding with an unprotected road sign.
Rolland took off solo on a final, uncategorised climb on Bergamo’s cobblestone roads but it proved in vain as Jungels jumped across and caught him.
Dumoulin was initially wrong-footed as Vincenzo Nibali (Bahrain-Merida) led the GC men across the gap to the Luxembourg, but a group of 12 arrived together to contest the finish.
And it was Jungels who got his arms in the air, to ensure he now leads Yates by 2’25” in the youth classification.
Giro d’Italia 2017: stage 15 – report
1) Bob Jungels (LUX) – QuickStep Floors – 4.16.51hrs
2) Nairo Quintana (COL) – Movistar – ST
3) Thibaut Pinot (FRA) – FDJ
4) Adam Yates (GBR) – Orica-Scott
5) Domenico Pozzovivo (ITA) – Ag2r-La Mondiale
6) Patrick Konrad (AUT) – Bora-hansgrohe
7) Vincenzo Nibali (ITA) – Bahrain-Merida
8) Tom Dumoulin (NED) – Team Sunweb
9) Ilnur Zakarin (RUS) – Katusha-Alpecin
10) Bauke Mollema (NED) – Trek-Segafredo
General classification
1) Tom Dumoulin (NED) – Team Sunweb – 63.48.08hrs
2) Nairo Quintana (COL) – Movistar +2.41
3) Thibaut Pinot (FRA) – FDJ +3.21
4) Vincenzo Nibali (ITA) – Bahrain-Merida +3.40
5) Ilnur Zakarin (RUS) – Katusha-Alpecin +4.24
6) Bauke Mollema (NED) – Trek-Segafredo +4.32
7) Domenico Pozzovivo (ITA) – Ag2r-La Mondiale +4.59
8) Bob Jungels (LUX) – QuickStep Floors +5.18
9) Andrey Amador (CRC) – Movistar +6.01
10) Steven Kruijswijk (NED) – LottoNL-Jumbo +7.03
11) Adam Yates (GBR) – Orica-Scott +7.43