As for the overall battle, meanwhile, Froome flew out of the backs, and was just two seconds slower than team-mate Kwiatkowski at the first time check.
Bardet was 43 seconds slower than Froome, and 19 slower than Uran at that point, and nearly came a cropper on the cobbles too, as he overshot a bend and only narrowly avoided the central bollards.
The Frenchman was evidently suffering, struggling in and out of the saddle, and was nearly a minute down on Uran at the top of the climb.
His struggles were such, Landa’s time – and the final podium spot – came into play, with the Spaniard 44 seconds faster to the top of the climb.
Landa stopped the clock in the Orange Velodrome in 29.06, meaning Bardet had to finish the last four kilometres in less than five minutes.
Uran, meanwhile, hit the barriers on the final sweeping bend into the Orange Velodrome, unclipping but staying upright to seal second place overall.
Bardet was next to arrive, but raced into the stadium with Froome closing in by the pedal-stroke – the French fans’ cheers turning to boos as the yellow jersey arrived.
Bardet held onto the final podium place by just one second, while Froome stopped the clock just six seconds slower than Bodnar – his all-round ability putting him on the brink of a third consecutive Tour win, a fourth in five years for himself and a fifth in six years for a British rider.
Tour de France 2017: stage 20 (ITT) – result
1) Maciej Bodnar (POL) – Bora-hansgrohe – 28.15
2) Michal Kwiatkowski (POL) – Team Sky +1″
3) Chris Froome (GBR) – Team Sky +6″
4) Tony Martin (GER) – Katusha-Alpecin +14″
5) Daryl Impey (RSA) – Orica-Scott +20″
6) Alberto Contador (ESP) – Trek-Segafredo +21″
7) Nikias Arndt (GER) – Team Sunweb +28″
8) Rigobero Uran (COL) – Cannondale-Drapac +31″
9) Stefan Kung (SUI) – BMC Racing +34″
10) Sylvain Chavanel (FRA) – Direct Energie +37″
General classification
1) Chris Froome (GBR) – Team Sky – 83.55.16hrs
2) Rigoberto Uran (COL) – Cannondale-Drapac +54″
3) Romain Bardet (FRA) – Ag2r-La Mondiale +2.20
4) Mikel Landa (ESP) – Team Sky +2.21
5) Fabio Aru (ITA) – Astana +3.05
6) Daniel Martin (IRL) – QuickStep Floors +4.42
7) Simon Yates (GBR) – Orica-Scott +6.14
8) Louis Meintjes (RSA) – UAE Team Emirates +8.20
9) Alberto Contador (ESP) – Trek-Segafredo +8.49
10) Warren Barguil (FRA) – Team Sunweb +9.25