Geschke was burned out after the steepest section of the climb, leaving Dumoulin to chase alone as Franco Pellizotti (Bahrain-Merida) took over the pace-setting.
Dumoulin initially had sight of the GC group, but constant attacks gradually opened the gap up – Thibaut Pinot (FDJ) kicked on, before Ilnur Zakarin (Katusha-Alpecin) and Domenico Pozzovivo (Ag2r-La Mondiale) also got a gap.
The uneven pace saw Yates put time into Bob Jungels (QuickStep Floors) too, but the Luxembourg champion hit back to ensure he lost no time in the white jersey classification.
With Landa already up the road celebrating, Pinot’s attack earned him a few seconds on Nibali, but the most important gap was that to Dumoulin.
And as he, visibly exhausted, crossed more than a minute down on Quintana, it was clear it will be the Colombian in the maglia rosa for the final mountain stage, with 53 seconds separating the top four overall.
Like Yates with Jungels, however, the final stage time trial means a small lead is unlikely to be enough, however – and all focus will now turn to Monte Grappa.
Giro d’Italia 2017: stage 19 – report
1) Mikel Landa (ESP) – Team Sky – 4.53.00hrs
2) Rui Costa (POR) – UAE Team Emirates +1.49
3) Pierre Rolland (FRA) – Cannondale-Drapac +1.54
4) Pello Bilbao (ESP) – Astana +2.12
5) Sebastian Henao (COL) – Team Sky +3.06
6) Evgeny Shalunov (RUS) – Gazprom-RusVelo +3.51
7) Luis Leon Sanchez (ESP) – Astana – ST
8) Matteo Busato (ITA) – Wilier Triestina-Selle Italia +5.05
9) Lorenzo Rota (ITA) – Bardiani-CSF – ST
10) Ilia Koshevoy (BLR) – Wilier Triestina-Selle Italia +6.44
General classification
1) Nairo Quintana (COL) – Movistar – 85.02.40hrs
2) Tom Dumoulin (NED) – Team Sunweb +38”
3) Vincezno Nibali (ITA) – Bahrain-Merida +43”
4) Thibaut Pinot (FRA) – FDJ +53”
5) Ilnur Zakarin (RUS) – Katusha-Alpecin +1.21
6) Domenico Pozzovivo (ITA) – Ag2r-La Mondiale +1.30
7) Bauke Mollema (NED) – Trek-Segafredo +2.48
8) Adam Yates (GBR) – Orica-Scott +6.35
9) Bob Jungels (LUX) – QuickStep Floors +7.03
10) Steven Kruijswijk (NED) – LottoNL-Jumbo +7.37