Chris Froome all but wrapped up his fourth Tour de France title after finishing third in the 22.5km individual time trial on Saturday.
Froome finished six seconds behind stage winner Maciej Bodnar and increased his lead over Rigoberto Uran in the overall classification to 54 seconds.
Sunday’s stage into Paris is traditionally a procession, so Froome will only need to stay upright to win the race.
South Africa’s Daryl Impey finished fifth on stage 20, 20 seconds behind Bodnar.
Countryman Louis Meintjes is eighth in the overall classification, eight minutes and 20 seconds behind Froome.
Stage 20 result:
1. Maciej Bodnar (Pol/Bora-Hansgrohe) 28mins 15secs
2. Michal Kwiatkowski (Pol/Team Sky) +1sec
3. Chris Froome (GB/Team Sky) +6secs
4. Tony Martin (Ger/Katusha-Alpecin) +14secs
5. Daryl Impey (SA/Orica-Scott) +20secs
6. Alberto Contador (Spa/Trek-Segafredo) +21secs
7. Nikias Arndt (Ger/Team Sunweb) +28secs
8. Rigoberto Uran (Col/Cannondale-Drapac) +31secs
9. Stefan Kung (Swi/BMC) +34secs
10. Sylvain Chavanel (Fra/Direct Energie) +37secs
General classification after stage 20:
1. Chris Froome (GB/Team Sky) 83hrs 55mins 16secs
2. Rigoberto Uran (Col/Cannondale-Drapac) +54secs
3. Romain Bardet (Fra/AG2R La Mondiale) +2mins 20secs
4. Mikel Landa (Spa/Team Sky) +2mins 21secs
5. Fabio Aru (Ita/Astana) +3mins 05secs
6. Dan Martin (Ire/Quick-Step Floors) +4mins 42secs
7. Simon Yates (GB/Orica-Scott) +6mins 14secs
8. Louis Meintjes (SA/Team UAE Emirates) +8mins 20secs
9. Alberto Contador (Spa/Trek-Segafredo) +8mins 49secs
10. Warren Barguil (Fra/Team Sunweb) +9mins 25secs
Photo: @letour_uk