Team-mate Poels lost just four seconds, showing great strength after the work done for Froome in the last two weeks, while Contador was roared in and smashed the first sub-48-minute time.
His lead was brief, however, as Kelderman took another 30 seconds off the mark – Chaves, who started before Kelderman, ultimately lost three-and-a-half minutes to the Dutchman by the time he rolled in.
Zakarin was a fraction of a second faster than Contador, before Nibali went second fastest, taking risks on the course, including a very tight line around the final corner.
But no sooner had Nibali finished than Froome stormed in to complete a blistering ride and celebrate his second stage win of this year’s race.
He now leads Nibali by 1’58”, with Keldeman a further 42 seconds back in third place overall; Zakarin is fourth at 3’07”, while Contador is the only other man within five minutes of Froome, on 4’58”.
Vuelta a Espana 2017: stage 16 – result
1) Chris Froome (GBR) – Team Sky – 47.00
2) Wilco Kelderman (NED) – Team Sunweb +29”
3) Vincenzo Nibali (ITA) – Bahrain-Merida +57”
4) Ilnur Zakarin (RUS) – Katusha-Alpecin +59”
5) Alberto Contador (ESP) – Trek-Segafredo – ST
6) Tobias Ludvigsson (SWE) – FDJ +1.07
7) Wout Poels (NED) – Team Sky +1.11
8) Lennard Kamna (GER) – Team Sunweb +1.30
9) Bob Jungels (LUX) – QuickStep Floors +1.41
10) Daniel Oss (ITA) – BMC Racing +1.49
General classification
1) Chris Froome (GBR) – Team Sky – 62.53.25hrs
2) Vincenzo Nibali (ITA) – Bahrain-Merida +1.58
3) Wilco Kelderman (NED) – Team Sunweb +2.40
4) Ilnur Zakarin (RUS) – Katusha-Alpecin +3.07
5) Alberto Contador (ESP) – Trek-Segafredo +4.58
6) Miguel Angel Lopez (COL) – Astana +5.25
7) Fabio Aru (ITA) – Astana +6.27
8) Wout Poels (NED) – Team Sky +6.33
9) Johan Esteban Chaves (COL) – Orica-Scott +6.40
10) Michael Woods (CAN) – Cannondale-Drapac +7.06