Romain Bardet responded well, however – ceding just a handful of seconds at the finish line though Nairo Quintana was more than 30 seconds behind the two, after a couple of hairy moments on the corners.
Froome, meanwhile, was fifth at the first time check but improved as the climb went on – he was just ten seconds behind Dumoulin at the second time check and then went quickest at the third point.
Fellow Brit Adam Yates (Orica-BikeExchange) successfully defended his white jersey – conceding only a few seconds to Louis Meintjes (Lampre-Merida), and also just 12 seconds to Quintana in the race for a podium place.
Yates had actually started strongest of the three, but lost time on the latter parts of the course to finish in 32.06 – two seconds quicker than second-placed Bauke Mollema (Trek-Segafredo).
Froome’s charge continued, however – the yellow jersey had just 1500m left to ride as Mollema finished – Dumoulin seemingly accepting his fate in the hot seat.
The Team Sky man stopped the clock in 30 minutes and 43 seconds to gain more than a minute on second-placed Mollema, third-placed Yates and fourth-placed Quintana as his charge towards a third yellow jersey continues.
Tour de France 2016: stage 18 (ITT) – result
1) Chris Froome (GBR) – Team Sky – 30.43
2) Tom Dumoulin (NED) – Giant-Alpecin +21”
3) Fabio Aru (ITA) – Astana +33”
4) Richie Porte (AUS) – BMC Racing – ST
5) Romain Bardet (FRA) – Ag2r-La Mondiale +42”
6) Thomas de Gendt (BEL) – Lotto-Soudal +1.02
7) Ion Izagirre (ESP) – Movistar +1.03
8) Joaquim Rodriguez (ESP) – Katusha +1.05
9) Louis Meintjes (RSA) – Lampre-Merida +1.08
10) Nairo Quintana (COL) – Movistar +1.10
General classification
1) Chris Froome (GBR) – Team Sky – 77.55.53hrs
2) Bauke Mollema (NED) – Trek-Segafredo +3.52
3) Adam Yates (GBR) – Orica-BikeExchange +4.16
4) Nairo Quintana (COL) – Movistar +4.37
5) Romain Bardet (FRA) – Ag2r-La Mondiale +4.57
6) Richie Porte (AUS) – BMC Racing +5.00
7) Fabio Aru (ITA) – Astana +6.08
8) Alejandro Valverde (ESP) – Movistar +6.37
9) Louis Meintjes (RSA) – Lampre-Merida +7.15
10) Daniel Martin (IRL) – Etixx-QuickStep +7.18