# 2019 Tour de France, Stage 12 to Stage 21

The 2019 Tour de France was the 106th edition of Tour de France, one of cycling's Grand Tours. The Tour began in Brussels, Belgium, with a flat stage on 6 July, and Stage 12 occurred on 18 July with a mountainous stage from Toulouse. The race finished on the Champs-Élysées in Paris on 28 July.

## Classification standings

Legend :
| Denotes the leader of the general classification | Denotes the leader of the mountains classification |
| Denotes the leader of the points classification | Denotes the leader of the young rider classification |
| Denotes the leader of the team classification | Denotes the winner of the combativity award |

## Stage 12

18 July 2019 - Toulouse to Bagnères-de-Bigorre, 209.5 km (130 mi)
After various attacks from the start of the race, a large breakaway group eventually established itself, achieving a lead of two minutes. From the breakaway group, Peter Sagan won the intermediate sprint at Bagnères-de-Luchon. Lilian Calmejane attacked the lead group with 70 km (43 mi) remaining in the stage, on the climb of the category 1 Col de Peyresourde to 1,569 m (5,148 ft), but was caught by Tim Wellens at the summit. Simon Clarke then went ahead, gaining a 40-second advantage on the descent. Matteo Trentin attacked from the breakaway group, at the beginning of the climb of the category 1 La Hourquette d'Ancizan to 1,564 m (5,131 ft), quickly catching Clarke, but with a five-man group only 15 seconds behind. Simon Yates and Gregor Mühlberger led the race over the summit, with Pello Bilbao a short distance behind. The lead group of three riders then stayed together to the finish, with Yates winning the sprint.
Stage 12 result :
| Rank | Rider | Team | Time |
| 1 | Simon Yates (GBR) | Mitchelton–Scott | 4h 57' 53" |
| 2 | Pello Bilbao (ESP) | Astana | + 0" |
| 3 | Gregor Mühlberger (AUT) | Bora–Hansgrohe | + 0" |
| 4 | Tiesj Benoot (BEL) | Lotto–Soudal | + 1' 28" |
| 5 | Fabio Felline (ITA) | Trek–Segafredo | + 1' 28" |
| 6 | Matteo Trentin (ITA) | Mitchelton–Scott | + 1' 28" |
| 7 | Oliver Naesen (BEL) | AG2R La Mondiale | + 1' 28" |
| 8 | Rui Costa (POR) | UAE Team Emirates | + 1' 28" |
| 9 | Simon Clarke (AUS) | EF Education First | + 1' 28" |
| 10 | Jasper Stuyven (BEL) | Trek–Segafredo | + 1' 28" |
General classification after stage 12 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 52h 26' 09" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 12" |
| 3 | Egan Bernal (COL) | Team Ineos | + 1' 16" |
| 4 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 27" |
| 5 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 1' 45" |
| 6 | Enric Mas (ESP) | Deceuninck–Quick-Step | + 1' 46" |
| 7 | Adam Yates (GBR) | Mitchelton–Scott | + 1' 47" |
| 8 | Nairo Quintana (COL) | Movistar Team | + 2' 04" |
| 9 | Dan Martin (IRL) | UAE Team Emirates | + 2' 09" |
| 10 | Thibaut Pinot (FRA) | Groupama–FDJ | + 2' 33" |

## Stage 13

19 July 2019 - Pau to Pau, 27.2 km (17 mi) (ITT)
The riders departed at one-minute intervals from 14:00 CET, with the final 35 riders departing at two-minute intervals between 16:11 and 17:19 CET.
Kasper Asgreen set a leading time of 35' 52", from early on. Wout van Aert was hopeful of taking the best time, before he cornered and crashed into a barrier, forcing his abandonment of the race in the last 2 km (1.2 mi). Thomas De Gendt then set a new leading time of 35' 36". Geraint Thomas then improved upon De Gendt's time, before Julian Alaphilippe bettered Thomas' result.
Stage 13 result :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 35' 00" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 14" |
| 3 | Thomas De Gendt (BEL) | Lotto–Soudal | + 36" |
| 4 | Rigoberto Urán (COL) | EF Education First | + 36" |
| 5 | Richie Porte (AUS) | Trek–Segafredo | + 45" |
| 6 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 45" |
| 7 | Thibaut Pinot (FRA) | Groupama–FDJ | + 49" |
| 8 | Kasper Asgreen (DEN) | Deceuninck–Quick-Step | + 52" |
| 9 | Enric Mas (ESP) | Deceuninck–Quick-Step | + 58" |
| 10 | Joey Rosskopf (USA) | CCC Team | + 1' 01" |
General classification after stage 13 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 53h 01' 09" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 26" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 2' 12" |
| 4 | Enric Mas (ESP) | Deceuninck–Quick-Step | + 2' 44" |
| 5 | Egan Bernal (COL) | Team Ineos | + 2' 52" |
| 6 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 3' 04" |
| 7 | Thibaut Pinot (FRA) | Groupama–FDJ | + 3' 22" |
| 8 | Rigoberto Urán (COL) | EF Education First | + 3' 54" |
| 9 | Nairo Quintana (COL) | Movistar Team | + 3' 55" |
| 10 | Adam Yates (GBR) | Mitchelton–Scott | + 3' 55" |

## Stage 14

20 July 2019 - Tarbes to Col du Tourmalet, 111 km (69 mi)
A lead group of seventeen riders established a three-minute lead over the peloton, before the category 1 Col du Soulor to 1,474 m (4,836 ft). Tim Wellens, Vincenzo Nibali and Élie Gesbert led up the climb, with Wellens leading over the summit. On the approach to the hors catégorie Col du Tourmalet, Romain Sicard was at the head of the race, 30 seconds in front of Gesbert and Lilian Calmejane. Gesbert caught and dropped Sicard with 13 km (8.1 mi) to climb, with Gesbert himself being caught by the lead group of general classification contenders at 10 km (6.2 mi) before the finish. With 1 km (0.62 mi) remaining, Geraint Thomas got detached from the lead group containing Alaphilippe, Buchmann, Pinot, Bernal, Landa and Kruijswijk. Thibaut Pinot attacked in the final 250 m (270 yd) and held his lead to the finish, at an altitude of 2,115 m (6,939 ft), for the Souvenir Jacques Goddet.
Stage 14 result :
| Rank | Rider | Team | Time |
| 1 | Thibaut Pinot (FRA) | Groupama–FDJ | 3h 10' 20" |
| 2 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | + 6" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 6" |
| 4 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 8" |
| 5 | Egan Bernal (COL) | Team Ineos | + 8" |
| 6 | Mikel Landa (ESP) | Movistar Team | + 14" |
| 7 | Rigoberto Urán (COL) | EF Education First | + 30" |
| 8 | Geraint Thomas (GBR) | Team Ineos | + 36" |
| 9 | Warren Barguil (FRA) | Arkéa–Samsic | + 38" |
| 10 | Jakob Fuglsang (DEN) | Astana | + 53" |
General classification after stage 14 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 56h 11' 29" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 2' 02" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 2' 14" |
| 4 | Egan Bernal (COL) | Team Ineos | + 3' 00" |
| 5 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 3' 12" |
| 6 | Thibaut Pinot (FRA) | Groupama–FDJ | + 3' 12" |
| 7 | Rigoberto Urán (COL) | EF Education First | + 4' 24" |
| 8 | Jakob Fuglsang (DEN) | Astana | + 5' 22" |
| 9 | Alejandro Valverde (ESP) | Movistar Team | + 5' 27" |
| 10 | Enric Mas (ESP) | Deceuninck–Quick-Step | + 5' 38" |

## Stage 15

21 July 2019 - Limoux to Foix (Prat d'Albis), 185 km (115 mi)
A lead group of 28 riders established itself by the Col de Montségur. The lead group was reduced to 16 riders on the climb of the Port de Lers. Simon Geschke attacked on the climb of the Mur de Péguère, with Simon Yates soon following. Yates caught Geschke at the summit, both 20 seconds ahead of the lead group. With 9 km (5.6 mi) to race, Yates attacked, holding a lead to the finish.
Stage 15 result :
| Rank | Rider | Team | Time |
| 1 | Simon Yates (GBR) | Mitchelton–Scott | 4h 47' 04" |
| 2 | Thibaut Pinot (FRA) | Groupama–FDJ | + 33" |
| 3 | Mikel Landa (ESP) | Movistar Team | + 33" |
| 4 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 51" |
| 5 | Egan Bernal (COL) | Team Ineos | + 51" |
| 6 | Lennard Kämna (GER) | Team Sunweb | + 1' 03" |
| 7 | Geraint Thomas (GBR) | Team Ineos | + 1' 22" |
| 8 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 22" |
| 9 | Alejandro Valverde (ESP) | Movistar Team | + 1' 22" |
| 10 | Richie Porte (AUS) | Trek–Segafredo | + 1' 30" |
General classification after stage 15 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 61h 00' 22" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 35" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 47" |
| 4 | Thibaut Pinot (FRA) | Groupama–FDJ | + 1' 50" |
| 5 | Egan Bernal (COL) | Team Ineos | + 2' 02" |
| 6 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 2' 14" |
| 7 | Mikel Landa (ESP) | Movistar Team | + 4' 54" |
| 8 | Alejandro Valverde (ESP) | Movistar Team | + 5' 00" |
| 9 | Jakob Fuglsang (DEN) | Astana | + 5' 27" |
| 10 | Rigoberto Urán (COL) | EF Education First | + 5' 33" |

## Rest day 2

22 July 2019 - Nîmes
Wilco Kelderman of Team Sunweb announced that he was abandoning the race and would not start stage 16.

## Stage 16

23 July 2019 - Nîmes to Nîmes, 177 km (110 mi)
The stage occurred during the July 2019 European heat wave, with the temperature around 40 °C (104 °F) in the afternoon. A five-man breakaway group established itself early in the race, gaining a lead of around two minutes. With 130 km (81 mi) to race, Geraint Thomas crashed but was able to recover, later claiming that his bike's gears had jammed. Jakob Fuglsang crashed with 28 km (17 mi) to the finish, but was forced to abandon the race. The breakaway group was caught with 2.5 km (1.6 mi) to race, with the stage culminating in a bunch sprint.
Stage 16 result :
| Rank | Rider | Team | Time |
| 1 | Caleb Ewan (AUS) | Lotto–Soudal | 3h 57' 08" |
| 2 | Elia Viviani (ITA) | Deceuninck–Quick-Step | + 0" |
| 3 | Dylan Groenewegen (NED) | Team Jumbo–Visma | + 0" |
| 4 | Peter Sagan (SVK) | Bora–Hansgrohe | + 0" |
| 5 | Niccolo Bonifazio (ITA) | Total Direct Énergie | + 0" |
| 6 | Michael Matthews (AUS) | Team Sunweb | + 0" |
| 7 | Matteo Trentin (ITA) | Mitchelton–Scott | + 0" |
| 8 | Jasper Stuyven (BEL) | Trek–Segafredo | + 0" |
| 9 | Alexander Kristoff (NOR) | UAE Team Emirates | + 0" |
| 10 | Andrea Pasqualon (ITA) | Wanty–Gobert | + 0" |
General classification after stage 16 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 64h 57' 32" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 35" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 47" |
| 4 | Thibaut Pinot (FRA) | Groupama–FDJ | + 1' 50" |
| 5 | Egan Bernal (COL) | Team Ineos | + 2' 02" |
| 6 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 2' 14" |
| 7 | Mikel Landa (ESP) | Movistar Team | + 4' 54" |
| 8 | Alejandro Valverde (ESP) | Movistar Team | + 5' 00" |
| 9 | Rigoberto Urán (COL) | EF Education First | + 5' 33" |
| 10 | Richie Porte (AUS) | Trek–Segafredo | + 6' 30" |

## Stage 17

24 July 2019 - Pont du Gard to Gap, 200 km (124 mi)
A large breakaway group of 33 riders quickly became established. As there were no general classification contenders in the breakaway group, the peloton decided to conserve energy, instead of pursuing the group. The breakaway group's lead stretched out to 15 minutes, with 40 km (25 mi) still to race. Towards the end of the final climb, Matteo Trentin attacked from the breakaway group and held on to take the stage. Luke Rowe and Tony Martin were both disqualified from the Tour, following an altercation near the front of the peloton, in the latter part of the stage.
Stage 17 result :
| Rank | Rider | Team | Time |
| 1 | Matteo Trentin (ITA) | Mitchelton–Scott | 4h 21' 36" |
| 2 | Kasper Asgreen (DEN) | Deceuninck–Quick-Step | + 37" |
| 3 | Greg Van Avermaet (BEL) | CCC Team | + 41" |
| 4 | Bauke Mollema (NED) | Trek–Segafredo | + 41" |
| 5 | Dylan Teuns (BEL) | Bahrain–Merida | + 41" |
| 6 | Gorka Izagirre (ESP) | Astana | + 41" |
| 7 | Daniel Oss (ITA) | Bora–Hansgrohe | + 44" |
| 8 | Pierre-Luc Périchon (FRA) | Cofidis | + 50" |
| 9 | Toms Skujiņš (LAT) | Trek–Segafredo | + 50" |
| 10 | Jesús Herrada (ESP) | Cofidis | + 55" |
General classification after stage 17 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 69h 39' 16" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 35" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 47" |
| 4 | Thibaut Pinot (FRA) | Groupama–FDJ | + 1' 50" |
| 5 | Egan Bernal (COL) | Team Ineos | + 2' 02" |
| 6 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 2' 14" |
| 7 | Mikel Landa (ESP) | Movistar Team | + 4' 54" |
| 8 | Alejandro Valverde (ESP) | Movistar Team | + 5' 00" |
| 9 | Rigoberto Urán (COL) | EF Education First | + 5' 33" |
| 10 | Richie Porte (AUS) | Trek–Segafredo | + 6' 30" |

## Stage 18

25 July 2019 - Embrun to Valloire, 208 km (129 mi)
A group of more than thirty riders went ahead after 50 km (31 mi) of racing, gaining a four-minute lead on the approach to the Col de Vars. Tim Wellens led the group over the first climb, with the lead now extended to seven minutes over the peloton. Greg Van Avermaet and Julien Bernard went ahead of the lead group on the approach to the Col d'Izoard. Bernard then led alone on the climb but was caught before the summit, with Damiano Caruso leading a small group over the top. An eleven-rider group reformed at the foot of the climb to the Col du Galibier, which had a five-minute advantage over the peloton. On the Galibier, Nairo Quintana attacked with 7.5 km (4.7 mi) still to climb, leading by over a minute and a half at the summit, which he held on the descent to the finish. Meanwhile, with 2 km (1.2 mi) still to climb of the Galibier, Egan Bernal attacked from within the yellow jersey group containing Alaphilippe and Thomas, allowing Bernal to recover half a minute on the other general classification contenders by the finish.
Stage 18 result :
| Rank | Rider | Team | Time |
| 1 | Nairo Quintana (COL) | Movistar Team | 5h 34' 15" |
| 2 | Romain Bardet (FRA) | AG2R La Mondiale | + 1' 35" |
| 3 | Alexey Lutsenko (KAZ) | Astana | + 2' 28" |
| 4 | Lennard Kämna (GER) | Team Sunweb | + 2' 58" |
| 5 | Damiano Caruso (ITA) | Bahrain–Merida | + 3' 00" |
| 6 | Tiesj Benoot (BEL) | Lotto–Soudal | + 4' 46" |
| 7 | Michael Woods (CAN) | EF Education First | + 4' 46" |
| 8 | Egan Bernal (COL) | Team Ineos | + 4' 46" |
| 9 | Serge Pauwels (BEL) | CCC Team | + 4' 46" |
| 10 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 5' 18" |
General classification after stage 18 :
| Rank | Rider | Team | Time |
| 1 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | 75h 18' 49" |
| 2 | Egan Bernal (COL) | Team Ineos | + 1' 30" |
| 3 | Geraint Thomas (GBR) | Team Ineos | + 1' 35" |
| 4 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 47" |
| 5 | Thibaut Pinot (FRA) | Groupama–FDJ | + 1' 50" |
| 6 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 2' 14" |
| 7 | Nairo Quintana (COL) | Movistar Team | + 3' 54" |
| 8 | Mikel Landa (ESP) | Movistar Team | + 4' 54" |
| 9 | Rigoberto Urán (COL) | EF Education First | + 5' 33" |
| 10 | Alejandro Valverde (ESP) | Movistar Team | + 5' 58" |

## Stage 19

26 July 2019 - Saint-Jean-de-Maurienne to Tignes Col de l'Iseran, 126.5 km (79 mi) 89 km (55 mi)
Around 40 km (25 mi) into the stage, Thibaut Pinot, who had been sitting fifth overall in the general classification and was noticeably struggling to deal with the pain of a muscle tear in his left thigh from the previous day, abandoned the race in tears after being unable to continue to ride with the pain.
The Souvenir Henri Desgrange was given to Egan Bernal, who was the first rider to summit the Col de l'Iseran, the highest climb of this race. As the riders began the descent of the Col de l'Iseran, the stage was neutralised due to snow, hailstorms, and mudslides rendering the road unsafe near Val-d'Isère on the ascent to Tignes, with times for the general classification being taken at the summit of the Col de l'Iseran. As a result, Bernal, who had been in second place, moved ahead of Julian Alaphilippe, who was nearly two minutes behind Bernal at the summit, and took the lead in that classification. Due to the neutralisation, there was no official winner of the stage, and the usual stage finish time bonuses of 10, 6, and 4 seconds for the first three finishers respectively were also not awarded. However, the special time bonuses of 8, 5, and 2 seconds on offer at the summit of the Col de l'Iseran were still awarded to the first three riders respectively to reach the summit.
Time gaps at the summit of the Col de l'Iseran :
| Rank | Rider | Team | Time |
| — | Egan Bernal (COL) | Team Ineos | 2h 40' 31" |
| — | Simon Yates (GBR) | Mitchelton–Scott | + 13" |
| — | Warren Barguil (FRA) | Arkéa–Samsic | + 40" |
| — | Laurens De Plus (BEL) | Team Jumbo–Visma | + 58" |
| — | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 58" |
| — | Geraint Thomas (GBR) | Team Ineos | + 58" |
| — | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 58" |
| — | Vincenzo Nibali (ITA) | Bahrain–Merida | + 58" |
| — | Rigoberto Urán (COL) | EF Education First | + 58" |
| — | Mikel Landa (ESP) | Movistar Team | + 58" |
General classification after stage 19 :
| Rank | Rider | Team | Time |
| 1 | Egan Bernal (COL) | Team Ineos | 78h 00' 42" |
| 2 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | + 45" |
| 3 | Geraint Thomas (GBR) | Team Ineos | + 1' 11" |
| 4 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 23" |
| 5 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 1' 50" |
| 6 | Mikel Landa (ESP) | Movistar Team | + 4' 30" |
| 7 | Rigoberto Urán (COL) | EF Education First | + 5' 09" |
| 8 | Nairo Quintana (COL) | Movistar Team | + 5' 17" |
| 9 | Alejandro Valverde (ESP) | Movistar Team | + 6' 25" |
| 10 | Richie Porte (AUS) | Trek–Segafredo | + 6' 28" |

## Stage 20

27 July 2019 - Albertville to Val Thorens, 130 km (81 mi) 59.5 km (37 mi)
The weather that caused the neutralisation of the previous stage also affected the route of this stage, with mudslides that rendered the descent off the Cormet de Roselend unusable. As a consequence, the stage was modified to avoid this part of the route, and shortened to 59 km (37 mi), keeping only the final 33 km (21 mi) climb to Val Thorens. All sporting points and time bonuses from the diverted route were withdrawn, leaving only those given on top of Val Thorens.
As the race travelled through the valley from Albertville to Moûtiers, a group of more than twenty riders established a two and a half minute lead over the peloton. On beginning the climb to Val Thorens, the lead group was reduced to four riders, with a further two riders then joining. With 12 km (7.5 mi) until the finish, Vincenzo Nibali attacked from the lead group. Nibali then held a lead to the finish line.
Stage 20 result :
| Rank | Rider | Team | Time |
| 1 | Vincenzo Nibali (ITA) | Bahrain–Merida | 1h 51' 53" |
| 2 | Alejandro Valverde (ESP) | Movistar Team | + 10" |
| 3 | Mikel Landa (ESP) | Movistar Team | + 14" |
| 4 | Egan Bernal (COL) | Team Ineos | + 17" |
| 5 | Geraint Thomas (GBR) | Team Ineos | + 17" |
| 6 | Rigoberto Urán (COL) | EF Education First | + 23" |
| 7 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 23" |
| 8 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 25" |
| 9 | Wout Poels (NED) | Team Ineos | + 30" |
| 10 | Nairo Quintana (COL) | Movistar Team | + 30" |
General classification after stage 20 :
| Rank | Rider | Team | Time |
| 1 | Egan Bernal (COL) | Team Ineos | 79h 52' 52" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 11" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 31" |
| 4 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 1' 56" |
| 5 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | + 3' 45" |
| 6 | Mikel Landa (ESP) | Movistar Team | + 4' 23" |
| 7 | Rigoberto Urán (COL) | EF Education First | + 5' 15" |
| 8 | Nairo Quintana (COL) | Movistar Team | + 5' 30" |
| 9 | Alejandro Valverde (ESP) | Movistar Team | + 6' 12" |
| 10 | Warren Barguil (FRA) | Arkéa–Samsic | + 7' 32" |

## Stage 21

28 July 2019 - Rambouillet to Paris (Champs-Élysées), 128 km (80 mi)
With 50 km (31 mi) still to race, after the peloton had completed a lap of the usual Champs-Élysées circuit, a four-man group comprising Jan Tratnik, Nils Politt, Omar Fraile and Tom Scully achieved a lead of over twenty seconds on the peloton. The group of four's advantage held until they were caught with 10 km (6.2 mi) to the finish. The peloton then headed the race into the finish. Edvald Boasson Hagen opened the sprint in the final 500 m (550 yd), before being passed by Maximiliano Richeze and Niccolò Bonifazio. Dylan Groenewegen and Caleb Ewan then took opposite sides of the road, to pass the other riders.
Stage 21 result :
| Rank | Rider | Team | Time |
| 1 | Caleb Ewan (AUS) | Lotto–Soudal | 3h 04' 08" |
| 2 | Dylan Groenewegen (NED) | Team Jumbo–Visma | + 0" |
| 3 | Niccolò Bonifazio (ITA) | Total Direct Énergie | + 0" |
| 4 | Maximiliano Richeze (ARG) | Deceuninck–Quick-Step | + 0" |
| 5 | Edvald Boasson Hagen (NOR) | Team Dimension Data | + 0" |
| 6 | André Greipel (GER) | Arkéa–Samsic | + 0" |
| 7 | Matteo Trentin (ITA) | Mitchelton–Scott | + 0" |
| 8 | Jasper Stuyven (BEL) | Trek–Segafredo | + 0" |
| 9 | Nikias Arndt (GER) | Team Sunweb | + 0" |
| 10 | Peter Sagan (SVK) | Bora–Hansgrohe | + 0" |
General classification after stage 21 :
| Rank | Rider | Team | Time |
| 1 | Egan Bernal (COL) | Team Ineos | 82h 57' 00" |
| 2 | Geraint Thomas (GBR) | Team Ineos | + 1' 11" |
| 3 | Steven Kruijswijk (NED) | Team Jumbo–Visma | + 1' 31" |
| 4 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 1' 56" |
| 5 | Julian Alaphilippe (FRA) | Deceuninck–Quick-Step | + 4' 05" |
| 6 | Mikel Landa (ESP) | Movistar Team | + 4' 23" |
| 7 | Rigoberto Urán (COL) | EF Education First | + 5' 15" |
| 8 | Nairo Quintana (COL) | Movistar Team | + 5' 30" |
| 9 | Alejandro Valverde (ESP) | Movistar Team | + 6' 12" |
| 10 | Warren Barguil (FRA) | Arkéa–Samsic | + 7' 32" |