# 2023 Tour de France

The 2023 Tour de France was the 110th edition of the Tour de France. It started in Bilbao, Spain, on 1 July and ended with the final stage at Champs-Élysées, Paris, on 23 July.
Defending champion Jonas Vingegaard (Team Jumbo–Visma) won the general classification for the second year in a row. Two-time champion Tadej Pogačar (UAE Team Emirates) finished in second place, with Adam Yates (UAE Team Emirates) finishing third.
The race began in Bilbao in the Basque Country before returning to France. The first two weeks of the race was closely fought between Vingegaard and Pogačar, with just 10 seconds between the riders by the end of the second week. The decisive stages were the individual time trial on stage 16 where Vingegaard won by 1 minute 38 seconds ahead of Pogačar, and the subsequent stage in the Alps where Vingegaard extended his lead to over seven minutes. Vingegaard won the Tour for the second year running, putting him equal on Tour wins with his rival Pogačar. His winning margin of 7 minutes 29 seconds was the largest since 2014.
The points classification was won by Jasper Philipsen (Alpecin–Deceuninck) for the first time. The mountains classification was won by Giulio Ciccone (Trek–Segafredo), the first Italian to achieve this feat since 1992. The young rider classification was won by Pogačar for the fourth year in a row, and the team of Team Jumbo–Visma won the team classification. Victor Campenaerts (Lotto–Dstny) was chosen as the most combative rider.
The race was followed by the second edition of the Tour de France Femmes, which held its first stage on the final day of the men's Tour.

## Teams

22 teams took part in the race. All 18 UCI WorldTeams were automatically invited. They were joined by 4 UCI ProTeams: the two highest placed UCI ProTeams in 2022 (Lotto–Dstny and Team TotalEnergies), along with Uno-X Pro Cycling Team and Israel–Premier Tech who were selected by Amaury Sport Organisation (ASO), the organisers of the Tour. The teams were announced on 4 January 2023.
UCI WorldTeams
* AG2R Citroën Team
* Alpecin–Deceuninck
* Arkéa–Samsic
* Astana Qazaqstan Team
* Bora–Hansgrohe
* Cofidis
* EF Education–EasyPost
* Groupama–FDJ
* Ineos Grenadiers
* Intermarché–Circus–Wanty
* Lidl–Trek
* Movistar Team
* Soudal–Quick-Step
* Team Bahrain Victorious
* Team dsm–firmenich
* Team Jayco–AlUla
* Team Jumbo–Visma
* UAE Team Emirates
UCI ProTeams
* Israel–Premier Tech
* Lotto–Dstny
* Team TotalEnergies
* Uno-X Pro Cycling Team

## Route and stages

In January 2022, Amaury Sport Organisation announced that the Basque Country in Spain would host the Grand Départ, with the first stage in Bilbao. It was the second time that the Basque Country hosted the Tour's start, following the 1992 edition. In October 2022, the full route was announced by Christian Prudhomme.
The race began in Bilbao, next to the Guggenheim Museum, before crossing into France on stage 3. After two stages in the Pyrenees, the Tour returned to the Puy de Dôme for the first time since 1988 at the end of the first week. After the first rest day, the race crossed over the Massif Central into the Alps, with stage 13 on Bastille Day ending with a summit finish on the Col du Grand Colombier. Another summit finish followed two stages later, this time at Saint-Gervais-les-Bains. Following the second rest day, stage 16 was the only individual time trial of the race, at 22.4 km (13.9 mi) in length. Stage 17 in the Alps featured the most amount of climbing, with over 5,000 m (16,000 ft) on the way to Courchevel. Two transitional stages led to the penultimate day, ending at Le Markstein in the Vosges, before a 500 km (310 mi) transfer for the ceremonial final stage in Paris.
The first week of the Tour was described by French rider Romain Bardet (Team dsm–firmenich) as "most difficult [...] that ever existed", featuring a large number of high-mountain climbs and offering up the possibility of significant time differences between the general classification contenders. The route was considered to favour climbers, with one short, uphill time trial on stage 16.
Stage characteristics :
| Stage | Date | Course | Distance | Elevation gain | Type | Type | Winner |
| 1 | 1 July | Bilbao (Spain) | 182 km (113 mi) | 3,242 m (10,636 ft) | | Medium-mountain stage | Adam Yates (GBR) |
| 2 | 2 July | Vitoria-Gasteiz to San Sebastián (Spain) | 209 km (130 mi) | 2,943 m (9,656 ft) | | Medium-mountain stage | Victor Lafay (FRA) |
| 3 | 3 July | Amorebieta-Etxano (Spain) to Bayonne | 193.5 km (120.2 mi) | 2,600 m (8,500 ft) | | Flat stage | Jasper Philipsen (BEL) |
| 4 | 4 July | Dax to Nogaro | 182 km (113 mi) | 1,434 m (4,705 ft) | | Flat stage | Jasper Philipsen (BEL) |
| 5 | 5 July | Pau to Laruns | 163 km (101 mi) | 3,922 m (12,867 ft) | | Mountain stage | Jai Hindley (AUS) |
| 6 | 6 July | Tarbes to Cauterets (Cambasque) | 145 km (90 mi) | 3,219 m (10,561 ft) | | Mountain stage | Tadej Pogačar (SLO) |
| 7 | 7 July | Mont-de-Marsan to Bordeaux | 170 km (110 mi) | 785 m (2,575 ft) | | Flat stage | Jasper Philipsen (BEL) |
| 8 | 8 July | Libourne to Limoges | 201 km (125 mi) | 1,812 m (5,945 ft) | | Hilly stage | Mads Pedersen (DEN) |
| 9 | 9 July | Saint-Léonard-de-Noblat to Puy de Dôme | 182.5 km (113.4 mi) | 3,949 m (12,956 ft) | | Mountain stage | Michael Woods (CAN) |
| | 10 July | Clermont-Ferrand | Rest day | Rest day | Rest day | Rest day | Rest day |
| 10 | 11 July | Vulcania to Issoire | 167.5 km (104.1 mi) | 3,127 m (10,259 ft) | | Medium-mountain stage | Pello Bilbao (ESP) |
| 11 | 12 July | Clermont-Ferrand to Moulins | 180 km (110 mi) | 1,854 m (6,083 ft) | | Flat stage | Jasper Philipsen (BEL) |
| 12 | 13 July | Roanne to Belleville-en-Beaujolais | 169 km (105 mi) | 3,088 m (10,131 ft) | | Medium-mountain stage | Ion Izagirre (ESP) |
| 13 | 14 July | Châtillon-sur-Chalaronne to Grand Colombier | 138 km (86 mi) | 2,413 m (7,917 ft) | | Mountain stage | Michał Kwiatkowski (POL) |
| 14 | 15 July | Annemasse to Morzine | 152 km (94 mi) | 4,281 m (14,045 ft) | | Mountain stage | Carlos Rodríguez (ESP) |
| 15 | 16 July | Les Gets to Saint-Gervais-les-Bains | 179 km (111 mi) | 4,527 m (14,852 ft) | | Mountain stage | Wout Poels (NED) |
| | 17 July | Saint-Gervais-les-Bains | Rest day | Rest day | Rest day | Rest day | Rest day |
| 16 | 18 July | Passy to Combloux | 22.4 km (13.9 mi) | 638 m (2,093 ft) | | Individual time trial | Jonas Vingegaard (DEN) |
| 17 | 19 July | Saint-Gervais-les-Bains to Courchevel | 166 km (103 mi) | 5,405 m (17,733 ft) | | Mountain stage | Felix Gall (AUT) |
| 18 | 20 July | Moûtiers to Bourg-en-Bresse | 185 km (115 mi) | 1,211 m (3,973 ft) | | Flat stage | Kasper Asgreen (DEN) |
| 19 | 21 July | Moirans-en-Montagne to Poligny | 173 km (107 mi) | 1,950 m (6,400 ft) | | Medium-mountain stage | Matej Mohorič (SLO) |
| 20 | 22 July | Belfort to Le Markstein | 133.5 km (83.0 mi) | 3,484 m (11,430 ft) | | Mountain stage | Tadej Pogačar (SLO) |
| 21 | 23 July | Saint-Quentin-en-Yvelines to Paris (Champs-Élysées) | 115 km (71 mi) | 598 m (1,962 ft) | | Flat stage | Jordi Meeus (BEL) |
| Total | Total | Total | 3,404 km (2,115 mi) | 56,482 m (185,308 ft) | | | |

## Pre-race favourites

The 2023 Tour de France was generally expected to be a two-way fight between defending champion Jonas Vingegaard (Team Jumbo–Visma) and two-time winner Tadej Pogačar (UAE Team Emirates). Both had finished in first and second place respectively the year before, with the positions reversed in 2021. The pair had raced against one another early in the season at Paris–Nice, a race won by Pogačar, while Vingegaard finished third. Vingegaard's form then picked up as the season progressed. He won three stages and the overall classification at the Tour of the Basque Country in April. At the Critérium du Dauphiné, the most important preparation event for the Tour, he won two stages and won the general classification by the biggest margin since 1993. Pogačar meanwhile enjoyed a very successful spring campaign, winning the Tour of Flanders, the Amstel Gold Race, and La Flèche Wallonne. He also came fourth at Milan–San Remo and third at the E3 Saxo Classic. A crash and subsequent injury at Liège–Bastogne–Liège then interrupted his season.
Behind Vingegaard and Pogačar, the best chances at overall victory were given to 2022 Giro d'Italia winner Jai Hindley (Bora–Hansgrohe). His best result in the run-up to the Tour was fourth overall at the Critérium du Dauphiné. Other riders named as possible favourites were Mikel Landa (Team Bahrain Victorious), Enric Mas (Movistar Team), David Gaudu (Groupama–FDJ), former Giro d'Italia winner Richard Carapaz (EF Education–EasyPost), Ben O'Connor (AG2R Citroën Team), and Romain Bardet (Team dsm–firmenich). Following his victory at the Tour de Suisse, the name of Mattias Skjelmose (Lidl–Trek) was also added to the list of potential favourites. Also named, albeit with even lower chances of victory, were Adam Yates (UAE Team Emirates), his brother Simon Yates (Team Jayco–AlUla), Daniel Martínez, Tom Pidcock (both Ineos Grenadiers), and Giulio Ciccone (Trek–Segafredo). Egan Bernal (Ineos Grenadiers), the winner of the 2019 Tour de France, was not given big chances to win overall, since he was still recovering from a life-threatening crash the year before, even though he performed well at the Critérium du Dauphiné.
Four-time winner Chris Froome (Israel–Premier Tech), who had so far not managed to reach his previous form after a serious accident in 2019, was left off his team's Tour roster. The most notable absentees from the race were a quartet of general classification favourites and former Grand Tour winners who chose to prioritise the 2023 Giro d'Italia, which featured more time trial kilometres than the Tour in 2023, which suited some of these riders. Those four were eventual Giro winner Primož Roglič (Team Jumbo–Visma), 2018 Tour winner Geraint Thomas (Ineos Grenadiers) and two who left the Giro through illness and injury when highly placed, 2020 Giro winner Tao Geoghegan Hart (Ineos Grenadiers) and incumbent World Champion and Vuelta a España winner Remco Evenepoel (Soudal–Quick-Step).
Several riders were seen as possible favourites for victories on stages ending in bunch sprints and therefore for the points classification, which is won based on points collected by high placings on individual stages and awards a green jersey. Mark Cavendish (Astana Qazaqstan Team) returned for his last Tour de France and was chasing the record for most stage wins by any rider, starting the Tour on an equal number of 34 with Eddy Merckx. A stage win at the Giro d'Italia proved that Cavendish was still a strong sprinter, even at the age of 38. Due to strong performances so far in the season, the best chances at multiple sprint stage wins were given to Jasper Philipsen (Alpecin–Deceuninck). Other favourites in this category included Dylan Groenewegen (Team Jayco–AlUla), and Fabio Jakobsen (Soudal–Quick-Step). Riders who could excel both in sprints and on more hilly terrain, and therefore would be candidates for the points classification as well, were defending green jersey winner Wout van Aert (Team Jumbo–Visma), former world champion Mads Pedersen (Lidl–Trek), Mathieu van der Poel (Alpecin–Deceuninck), and Biniam Girmay (Intermarché–Circus–Wanty).

## Race overview
### Grand Départ and Week One

The first stage around Bilbao in the Basque Country saw a crash of several riders, which ultimately forced two pre-race favourites, Carapaz and Mas, to abandon. The race broke into several groups over the two final climbs of the day, with identical twins Simon and Adam Yates breaking away from a select group on the final ascent. The pair held their advantage to the finish, with Adam Yates taking the stage win and the first leader's yellow jersey ahead of his brother. Pogačar won the sprint in the group behind to finish third, and Neilson Powless (EF Education–EasyPost) took the lead in the mountains classification. Stage 2 featured the climb of the Jaizkibel, prominently used in the race Clásica de San Sebastián later in the season. On the climb, a select group of favourites emerged ahead of the peloton, with Pogačar taking eight bonus seconds available at the summit ahead of Vingegaard. Victor Lafay (Cofidis) broke clear of the leading group within the final kilometre of the stage and managed to keep his advantage to win the stage ahead of van Aert, while Yates retained the yellow jersey.
Jasper Philipsen won the following two, relatively flat, stages from bunch sprints. On stage 3 into Bayonne, he came in ahead of Phil Bauhaus (Team Bahrain Victorious), following a strong lead-out by teammate Mathieu van der Poel. Yates remained in the leader's jersey while Powless collected more points for the mountains classification as part of the breakaway. Philipsen then won ahead of Caleb Ewan (Lotto–Dstny) and Bauhaus at the finish of stage 4, which ended at the Circuit Paul Armagnac in Nogaro. The final part of the stage was marred by several crashes, including Fabio Jakobsen, while Yates retained the yellow jersey for another day. Following two hard opening days and with the high mountains of the Pyrenees to come the day after, the field was taking a slow tempo during stage 4, with no breakaway forming until 100 km (62 mi) into the race. This led to criticism, with some, such as stage winner Philipsen, describing it as "the most boring Tour de France stage for a long time".
On stage 5, the first mountain stage in the Pyrenees, a 36-man breakaway containing multiple pre-race favourites including Jai Hindley escaped from the bunch and established a stable advantage. The maximum lead of the group over the field was four minutes and was still at 2:30 minutes as it began the ascent of the final climb of the day, the Col de Marie-Blanque. Hindley dropped the remaining breakaway riders and rode alone over the top of the climb and into the finish in Laruns to win the stage, taking the lead in the general classification. Felix Gall (AG2R Citroën Team) had gained enough points during the stage to go into the lead of the mountains classification. Behind in the group of favourites, Vingegaard attacked 1.5 km (0.93 mi) from the summit of the Marie-Blanque and managed to distance Pogačar. Catching up to several breakaway riders, Vingegaard finished fifth on the day, 34 seconds behind Hindley. Pogačar opted to wait for distanced teammate Adam Yates to try to limit his losses, but eventually arrived at the finish 1:04 minutes behind Vingegaard, dropping to sixth place overall. With him came in other favourites such as Gaudu, Martinez, Rodriguez, and the Yates brothers. Meanwhile, Ben O'Connor and Romain Bardet lost 1:57 minutes to Hindley.
On stage 6, Vingegaard employed similar tactics to stage 5, outdistancing Hindley, but was unable to answer Pogačar's attack 3 km (1.9 mi) from the finish line; Pogačar won the stage and narrowed Vingegaard's general-classification lead over him to 25 seconds, while Vingegaard took the yellow jersey and second place on the stage. The seventh stage, another flat stage ending in a bunch sprint, was won by Philipsen again, narrowly beating Mark Cavendish, whose bicycle gears slipped within metres of the finish line, slowing his momentum. Stage 8 put an end to Cavendish's attempt to break the record for most stage wins, as an injury sustained in a crash forced him to abandon the Tour; the stage was won in a sprint by Mads Pedersen. In stage 9, a 14-man breakaway emerged early; late in the stage, Matteo Jorgenson (Movistar Team) broke away from the breakaway and led the race alone for most of the last 47 km (29 mi) before being overtaken in the last 500 m (550 yd) by Michael Woods (Israel–Premier Tech), who won the stage at the top of the Puy de Dôme. Vingegaard retained the yellow jersey, but lost time to Pogačar, who crossed the finish line eight seconds ahead of him.

### Week Two

After the first rest day, stage 10 had a chaotic beginning, with many groups of riders—at one point including Vingegaard and Pogačar—attempting to break away before being caught by the peloton; a stable breakaway emerged around the halfway point of the stage. Krists Neilands attacked the breakaway group and was solo leader for much of the last section of the stage, but was eventually caught by other breakaway riders including Pello Bilbao, who went on to win the stage. Bilbao dedicated his victory to his late teammate Gino Mäder, who had died after a crash in the Tour de Suisse the previous month. Jasper Philipsen took his fourth stage-win of the Tour in a sprint on the eleventh stage to Moulins. In the twelfth stage, Ion Izagirre of the Cofidis team came in first after he escaped solo in the last 30 km (19 mi) towards Belleville en Beaujolais. Michał Kwiatkowski won stage 13 after breaking away on his own 11 km (6.8 mi) from the finish at the top of the Grand Colombier. Pogačar cut Vingegaard's lead to nine seconds.
In the fourteenth stage, an early 13-rider crash led race officials to suspend the stage for 30 minutes and caused several riders to abandon the Tour. On the climb to the Col de Joux Plane, Pogačar and Vingegaard led the stage. Pogačar attacked about 2 km (1.2 mi) from the top of the climb, but Vingegaard recovered and caught up with him; Pogačar's next attack was obstructed by media motorcycles crowding the road. Carlos Rodríguez caught Vingegaard and Pogačar during the final descent and went on to win the stage, moving one second ahead of Jai Hindley into third place overall. Wout Poels soloed to victory in stage 15 after he broke away 11 km (6.8 mi) from the finish line on the penultimate climb of the Côtes des Amerands. It was his first Tour de France stage win after years as a super-domestique.

### Week Three

The third week began with a time trial of 22.4 km between Passy and Combloux in which Pogačar aimed to reverse the 10 second lead of Vingegaard, but the latter won stage 16 decisively and widened his lead to 1 minute and 48 seconds. Pogačar came in second, over a minute ahead of Vingegaard's teammate van Aert, while Adam Yates moved into third place in the general classification, ahead of Rodriguez. On stage 17, which was a mountainous one, a fierce counter-attack from Pogačar was expected. However, Pogačar needed assistance from his teammate Marc Soler in the climb towards the Col de la Loze and lost further time to Vingegaard, who widened the lead to more than seven minutes in a stage won by Gall.
Kasper Asgreen held off the competition to win the eighteenth stage, which entered the Rhone valley. Meanwhile, van Aert left the race to be with his wife, who was about to give birth. On stage 19, Matej Mohorič won by the width of a rim to beat Asgreen in a photo finish in Poligny. After winning the stage, Mohorič, during an emotional interview on the difficulty of professional cycling, paid tribute to his late teammate Gino Mäder, who died in a crash at in the Tour de Suisse in June. In the twentieth stage, Thibaut Pinot, in his last Tour before retirement, attacked the breakaway and was solo leader at the top of the Petit Ballon, which was lined by thousands of fans cheering him on. He was overtaken and dropped by the race leaders on the ascent to the Col du Platzerwasel, and Pogačar won the stage ahead of Gall and his tour rival Vingegaard. In the same stage, the Italian Giulio Ciccone sealed the victory for the mountain classification. He is the first Italian to achieve this feat since Claudio Chiappucci in 1992.
The final stage was traditionally calm and the Belgian Jordi Meeus won just ahead of his compatriot Philipsen, Groenewegen, and Pedersen. Philipsen won the green jersey of the points classification for the first time in his career. Vingegaard crossed the finish line at the Champs-Élysées arm in arm with his teammates, finishing 7:29 minutes ahead of Pogačar and 10:56 minutes ahead of Adam Yates to win the Tour de France for the second straight year. His winning margin of 7 minutes 29 seconds was the largest since 2014. Vingegaard's Team Jumbo–Visma won the teams classification. Victor Campenaerts was chosen as the most combative rider. Runner up Pogačar won the white jersey of the young rider classification for the fourth year in a row.

## Classification leadership

Classification leadership by stage :
| Stage | Winner | General classification | Points classification | Mountains classification | Young rider classification | Team classification | Combativity award |
| 1 | Adam Yates | Adam Yates | Adam Yates | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Adam Yates |
| 2 | Victor Lafay | Adam Yates | Victor Lafay | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Neilson Powless |
| 3 | Jasper Philipsen | Adam Yates | Victor Lafay | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Laurent Pichon |
| 4 | Jasper Philipsen | Adam Yates | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Benoît Cosnefroy |
| 5 | Jai Hindley | Jai Hindley | Jasper Philipsen | Felix Gall | Tadej Pogačar | Team Jumbo–Visma | Wout van Aert |
| 6 | Tadej Pogačar | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Wout van Aert |
| 7 | Jasper Philipsen | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Simon Guglielmi |
| 8 | Mads Pedersen | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Jumbo–Visma | Anthony Turgis |
| 9 | Michael Woods | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Bahrain Victorious | Matteo Jorgenson |
| 10 | Pello Bilbao | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Bahrain Victorious | Krists Neilands |
| 11 | Jasper Philipsen | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Bahrain Victorious | Daniel Oss |
| 12 | Ion Izagirre | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Team Bahrain Victorious | Mathieu van der Poel |
| 13 | Michał Kwiatkowski | Jonas Vingegaard | Jasper Philipsen | Neilson Powless | Tadej Pogačar | Ineos Grenadiers | Michał Kwiatkowski |
| 14 | Carlos Rodríguez | Jonas Vingegaard | Jasper Philipsen | Jonas Vingegaard | Tadej Pogačar | Ineos Grenadiers | Giulio Ciccone |
| 15 | Wout Poels | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | Adrien Petit |
| 16 | Jonas Vingegaard | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | no award |
| 17 | Felix Gall | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | Felix Gall |
| 18 | Kasper Asgreen | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | Victor Campenaerts |
| 19 | Matej Mohorič | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | Victor Campenaerts |
| 20 | Tadej Pogačar | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | Thibaut Pinot |
| 21 | Jordi Meeus | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | no award |
| Final | Final | Jonas Vingegaard | Jasper Philipsen | Giulio Ciccone | Tadej Pogačar | Team Jumbo–Visma | Victor Campenaerts |
* ↑ On stage 2, Simon Yates, who was second in the points classification, wore the green jersey, because first placed Adam Yates wore the yellow jersey as the leader of the general classification.
* ↑ On stage 15, Neilson Powless, who was second in the mountains classification, wore the polkadot jersey, because first placed Jonas Vingegaard wore the yellow jersey as the leader of the general classification.

## Classification standings

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

### General classification

Final general classification (1–10) :
| Rank | Rider | Team | Time |
| 1 | Jonas Vingegaard (DEN) | Team Jumbo–Visma | 82h 05' 42" |
| 2 | Tadej Pogačar (SLO) | UAE Team Emirates | + 7' 29" |
| 3 | Adam Yates (GBR) | UAE Team Emirates | + 10' 56" |
| 4 | Simon Yates (GBR) | Team Jayco–AlUla | + 12' 23" |
| 5 | Carlos Rodríguez (ESP) | Ineos Grenadiers | + 13' 17" |
| 6 | Pello Bilbao (ESP) | Team Bahrain Victorious | + 13' 27" |
| 7 | Jai Hindley (AUS) | Bora–Hansgrohe | + 14' 44" |
| 8 | Felix Gall (AUT) | AG2R Citroën Team | + 16' 09" |
| 9 | David Gaudu (FRA) | Groupama–FDJ | + 23' 08" |
| 10 | Guillaume Martin (FRA) | Cofidis | + 26' 30" |
Final general classification (11–150) :
| Rank | Rider | Team | Time |
| 11 | Thibaut Pinot (FRA) | Groupama–FDJ | + 28' 03" |
| 12 | Sepp Kuss (USA) | Team Jumbo–Visma | + 37' 32" |
| 13 | Tom Pidcock (GBR) | Ineos Grenadiers | + 47' 52" |
| 14 | Rafał Majka (POL) | UAE Team Emirates | + 56' 09" |
| 15 | Jonathan Castroviejo (ESP) | Ineos Grenadiers | + 56' 37" |
| 16 | Chris Harper (AUS) | Team Jayco–AlUla | + 57' 29" |
| 17 | Ben O'Connor (AUS) | AG2R Citroën Team | + 1h 04' 59" |
| 18 | Wilco Kelderman (NLD) | Team Jumbo–Visma | + 1h 06' 46" |
| 19 | Mikel Landa (ESP) | Team Bahrain Victorious | + 1h 12' 41" |
| 20 | Valentin Madouas (FRA) | Groupama–FDJ | + 1h 14' 10" |
| 21 | Emanuel Buchmann (GER) | Bora–Hansgrohe | + 1h 15' 44" |
| 22 | Warren Barguil (FRA) | Arkéa–Samsic | + 1h 17' 06" |
| 23 | Felix Großschartner (AUT) | UAE Team Emirates | + 1h 45' 21" |
| 24 | Tiesj Benoot (BEL) | Team Jumbo–Visma | + 1h 46' 55" |
| 25 | Clément Berthet (FRA) | AG2R Citroën Team | + 1h 50' 19" |
| 26 | Bob Jungels (LUX) | Bora–Hansgrohe | + 1h 58' 46" |
| 27 | Wout Poels (NLD) | Team Bahrain Victorious | + 2h 05' 44" |
| 28 | Jack Haig (AUS) | Team Bahrain Victorious | + 2h 10' 32" |
| 29 | Mattias Skjelmose (DEN) | Lidl–Trek | + 2h 15' 27" |
| 30 | Tobias Halland Johannessen (NOR) | Uno-X Pro Cycling Team | + 2h 15' 33" |
| 31 | Mathieu Burgaudeau (FRA) | Team TotalEnergies | + 2h 21' 13" |
| 32 | Giulio Ciccone (ITA) | Lidl–Trek | + 2h 24' 29" |
| 33 | Julian Alaphilippe (FRA) | Soudal–Quick-Step | + 2h 25' 43" |
| 34 | Harold Tejada (COL) | Astana Qazaqstan Team | + 2h 27' 46" |
| 35 | Dylan Teuns (BEL) | Israel–Premier Tech | + 2h 34' 28" |
| 36 | Egan Bernal (COL) | Ineos Grenadiers | + 2h 38' 16" |
| 37 | Gorka Izagirre (ESP) | Movistar Team | + 2h 38' 53" |
| 38 | Hugo Houle (CAN) | Israel–Premier Tech | + 2h 42' 05" |
| 39 | Nick Schultz (AUS) | Israel–Premier Tech | + 2h 43' 32" |
| 40 | Alexey Lutsenko (KAZ) | Astana Qazaqstan Team | + 2h 43' 33" |
| 41 | Kevin Geniets (LUX) | Groupama–FDJ | + 2h 44' 14" |
| 42 | Dylan van Baarle (NLD) | Team Jumbo–Visma | + 2h 46' 05" |
| 43 | Jonas Gregaard (DEN) | Uno-X Pro Cycling Team | + 2h 47' 07" |
| 44 | Gregor Mühlberger (AUT) | Movistar Team | + 2h 49' 22" |
| 45 | Ion Izagirre (ESP) | Cofidis | + 2h 50' 09" |
| 46 | Chris Hamilton (AUS) | Team dsm–firmenich | + 2h 51' 00" |
| 47 | Georg Zimmermann (GER) | Intermarché–Circus–Wanty | + 2h 54' 05" |
| 48 | Michael Woods (CAN) | Israel–Premier Tech | + 2h 54' 47" |
| 49 | Michał Kwiatkowski (POL) | Ineos Grenadiers | + 2h 56' 08" |
| 50 | Krists Neilands (LAT) | Israel–Premier Tech | + 2h 56' 21" |
| 51 | Clément Champoussin (FRA) | Arkéa–Samsic | + 2h 58' 07" |
| 52 | Alex Aranburu (ESP) | Movistar Team | + 3h 02' 59" |
| 53 | Nelson Oliveira (POR) | Movistar Team | + 3h 08' 26" |
| 54 | Stefan Küng (SUI) | Groupama–FDJ | + 3h 08' 29" |
| 55 | Aurélien Paret-Peintre (FRA) | AG2R Citroën Team | + 3h 09' 31" |
| 56 | Marc Soler (ESP) | UAE Team Emirates | + 3h 09' 56" |
| 57 | Mathieu van der Poel (NLD) | Alpecin–Deceuninck | + 3h 11' 24" |
| 58 | Matthew Dinham (AUS) | Team dsm–firmenich | + 3h 13' 32" |
| 59 | Maxim Van Gils (BEL) | Lotto–Dstny | + 3h 17' 49" |
| 60 | Omar Fraile (ESP) | Ineos Grenadiers | + 3h 19' 04" |
| 61 | Kevin Vermaerke (USA) | Team dsm–firmenich | + 3h 24' 20" |
| 62 | Nils Politt (GER) | Bora–Hansgrohe | + 3h 28' 47" |
| 63 | Quentin Pacher (FRA) | Groupama–FDJ | + 3h 33' 43" |
| 64 | Victor Campenaerts (BEL) | Lotto–Dstny | + 3h 34' 58" |
| 65 | Matis Louvel (FRA) | Arkéa–Samsic | + 3h 36' 09" |
| 66 | Neilson Powless (USA) | EF Education–EasyPost | + 3h 37' 30" |
| 67 | Rui Costa (POR) | Intermarché–Circus–Wanty | + 3h 37' 57" |
| 68 | Anthony Delaplace (FRA) | Arkéa–Samsic | + 3h 41' 37" |
| 69 | Simon Guglielmi (FRA) | Arkéa–Samsic | + 3h 41' 48" |
| 70 | Lars van den Berg (NLD) | Groupama–FDJ | + 3h 46' 03" |
| 71 | Rigoberto Urán (COL) | EF Education–EasyPost | + 3h 50' 15" |
| 72 | Matej Mohorič (SLO) | Team Bahrain Victorious | + 3h 51' 05" |
| 73 | Nans Peters (FRA) | AG2R Citroën Team | + 3h 53' 06" |
| 74 | Juan Pedro López (ESP) | Lidl–Trek | + 3h 54' 39" |
| 75 | Pierre Latour (FRA) | Team TotalEnergies | + 3h 55' 25" |
| 76 | Oliver Naesen (BEL) | AG2R Citroën Team | + 3h 56' 45" |
| 77 | Lilian Calmejane (FRA) | Intermarché–Circus–Wanty | + 4h 01' 43" |
| 78 | Marco Haller (AUT) | Bora–Hansgrohe | + 4h 02' 37" |
| 79 | Jasper Stuyven (BEL) | Lidl–Trek | + 4h 03' 24" |
| 80 | Christophe Laporte (FRA) | Team Jumbo–Visma | + 4h 05' 47" |
| 81 | Stan Dewulf (BEL) | AG2R Citroën Team | + 4h 07' 42" |
| 82 | Patrick Konrad (AUT) | Bora–Hansgrohe | + 4h 07' 43" |
| 83 | Alberto Bettiol (ITA) | EF Education–EasyPost | + 4h 08' 58" |
| 84 | Lawson Craddock (USA) | Team Jayco–AlUla | + 4h 12' 31" |
| 85 | Jonas Abrahamsen (NOR) | Uno-X Pro Cycling Team | + 4h 13' 32" |
| 86 | Tony Gallopin (FRA) | Lidl–Trek | + 4h 14' 49" |
| 87 | Kasper Asgreen (DEN) | Soudal–Quick-Step | + 4h 15' 09" |
| 88 | Daniel Oss (ITA) | Team TotalEnergies | + 4h 16' 19" |
| 89 | Valentin Ferron (FRA) | Team TotalEnergies | + 4h 19' 15" |
| 90 | Corbin Strong (NZL) | Israel–Premier Tech | + 4h 21' 21" |
| 91 | Pascal Eenkhoorn (NLD) | Lotto–Dstny | + 4h 21' 55" |
| 92 | Fred Wright (GBR) | Team Bahrain Victorious | + 4h 22' 51" |
| 93 | Nathan Van Hooydonck (BEL) | Team Jumbo–Visma | + 4h 24' 04" |
| 94 | Anthony Turgis (FRA) | Team TotalEnergies | + 4h 24' 22" |
| 95 | Torstein Træen (NOR) | Uno-X Pro Cycling Team | + 4h 26' 27" |
| 96 | Magnus Cort (DEN) | EF Education–EasyPost | + 4h 32' 15" |
| 97 | Jasper Philipsen (BEL) | Alpecin–Deceuninck | + 4h 32' 46" |
| 98 | Bryan Coquard (FRA) | Cofidis | + 4h 33' 15" |
| 99 | Anthon Charmig (DEN) | Uno-X Pro Cycling Team | + 4h 34' 51" |
| 100 | Edvald Boasson Hagen (NOR) | Team TotalEnergies | + 4h 37' 58" |
| 101 | Benoît Cosnefroy (FRA) | AG2R Citroën Team | + 4h 39' 22" |
| 102 | Vegard Stake Laengen (NOR) | UAE Team Emirates | + 4h 40' 23" |
| 103 | Mike Teunissen (NLD) | Intermarché–Circus–Wanty | + 4h 41' 35" |
| 104 | Yves Lampaert (BEL) | Soudal–Quick-Step | + 4h 42' 36" |
| 105 | Mads Pedersen (DEN) | Lidl–Trek | + 4h 43' 50" |
| 106 | Rémi Cavagna (FRA) | Soudal–Quick-Step | + 4h 44' 01" |
| 107 | Matteo Trentin (ITA) | UAE Team Emirates | + 4h 44' 34" |
| 108 | Rasmus Tiller (NOR) | Uno-X Pro Cycling Team | + 4h 46' 38" |
| 109 | Simon Clarke (AUS) | Israel–Premier Tech | + 4h 50' 33" |
| 110 | Andrey Amador (CRI) | EF Education–EasyPost | +4h 54' 07" |
| 111 | Dion Smith (NZL) | Intermarché–Circus–Wanty | + 4h 54' 13" |
| 112 | Luka Mezgec (SLO) | Team Jayco–AlUla | + 4h 56' 32" |
| 113 | Quinten Hermans (BEL) | Alpecin–Deceuninck | + 4h 58' 42" |
| 114 | Jonas Rickaert (BEL) | Alpecin–Deceuninck | + 5h 00' 23" |
| 115 | Alex Kirsch (LUX) | Lidl–Trek | + 5h 00' 55" |
| 116 | Danny van Poppel (NLD) | Bora–Hansgrohe | + 5h 01' 34" |
| 117 | Christopher Juul-Jensen (DEN) | Team Jayco–AlUla | + 5h 04' 45" |
| 118 | Tim Declercq (BEL) | Soudal–Quick-Step | + 5h 05' 18" |
| 119 | Dries Devenyns (BEL) | Soudal–Quick-Step | + 5h 06' 37" |
| 120 | Florian Vermeersch (BEL) | Lotto–Dstny | + 5h 06' 38" |
| 121 | Nikias Arndt (GER) | Team Bahrain Victorious | + 5h 08' 07" |
| 122 | Søren Kragh Andersen (DEN) | Alpecin–Deceuninck | + 5h 08' 38" |
| 123 | Mikkel Bjerg (DEN) | UAE Team Emirates | + 5h 09' 02" |
| 124 | Laurent Pichon (FRA) | Arkéa–Samsic | + 5h 10' 04" |
| 125 | Biniam Girmay (ERI) | Intermarché–Circus–Wanty | + 5h 10' 20" |
| 126 | Guillaume Boivin (CAN) | Israel–Premier Tech | + 5h 11' 01" |
| 127 | Peter Sagan (SVK) | Team TotalEnergies | + 5h 14' 17" |
| 128 | Jenthe Biermans (BEL) | Arkéa–Samsic | + 5h 14' 24" |
| 129 | Silvan Dillier (SUI) | Alpecin–Deceuninck | + 5h 15' 06" |
| 130 | Luke Durbridge (AUS) | Team Jayco–AlUla | + 5h 16' 18" |
| 131 | Olivier Le Gac (FRA) | Groupama–FDJ | + 5h 17' 09" |
| 132 | Luca Mozzato (ITA) | Arkéa–Samsic | + 5h 17' 22" |
| 133 | Michael Gogl (AUT) | Alpecin–Deceuninck | + 5h 19' 44" |
| 134 | Alexander Kristoff (NOR) | Uno-X Pro Cycling Team | + 5h 23' 51" |
| 135 | Gianni Moscon (ITA) | Astana Qazaqstan Team | + 5h 23' 59" |
| 136 | Jasper De Buyst (BEL) | Lotto–Dstny | + 5h 27' 04" |
| 137 | Dylan Groenewegen (NLD) | Team Jayco–AlUla | + 5h 27' 21" |
| 138 | Nils Eekhoff (NLD) | Team dsm–firmenich | + 5h 33' 18" |
| 139 | Jordi Meeus (BEL) | Bora–Hansgrohe | + 5h 33' 51" |
| 140 | Søren Wærenskjold (NOR) | Uno-X Pro Cycling Team | + 5h 33' 52" |
| 141 | Elmar Reinders (NLD) | Team Jayco–AlUla | + 5h 35' 17" |
| 142 | Axel Zingle (FRA) | Cofidis | + 5h 39' 23" |
| 143 | Adrien Petit (FRA) | Intermarché–Circus–Wanty | + 5h 41' 56" |
| 144 | Sam Welsford (AUS) | Team dsm–firmenich | + 5h 42' 20" |
| 145 | John Degenkolb (GER) | Team dsm–firmenich | + 5h 44' 09" |
| 146 | Alex Edmondson (AUS) | Team dsm–firmenich | + 5h 44' 39" |
| 147 | Frederik Frison (BEL) | Lotto–Dstny | + 5h 55' 20" |
| 148 | Yevgeniy Fedorov (KAZ) | Astana Qazaqstan Team | + 5h 56' 37" |
| 149 | Cees Bol (NLD) | Astana Qazaqstan Team | + 5h 57' 44" |
| 150 | Michael Mørkøv (DEN) | Soudal–Quick-Step | + 6h 07' 11" |

### Points classification

Final points classification (1–10) :
| Rank | Rider | Team | Points |
| 1 | Jasper Philipsen (BEL) | Alpecin–Deceuninck | 377 |
| 2 | Mads Pedersen (DEN) | Lidl–Trek | 258 |
| 3 | Bryan Coquard (FRA) | Cofidis | 203 |
| 4 | Tadej Pogačar (SLO) | UAE Team Emirates | 186 |
| 5 | Jonas Vingegaard (DEN) | Team Jumbo–Visma | 128 |
| 6 | Kasper Asgreen (DEN) | Soudal–Quick-Step | 125 |
| 7 | Jordi Meeus (BEL) | Bora–Hansgrohe | 123 |
| 8 | Matej Mohorič (SLO) | Team Bahrain Victorious | 106 |
| 9 | Pello Bilbao (ESP) | Team Bahrain Victorious | 103 |
| 10 | Dylan Groenewegen (NED) | Team Jayco–AlUla | 95 |

### Mountains classification

Final mountains classification (1–10) :
| Rank | Rider | Team | Points |
| 1 | Giulio Ciccone (ITA) | Lidl–Trek | 106 |
| 2 | Felix Gall (AUT) | AG2R Citroën Team | 92 |
| 3 | Jonas Vingegaard (DEN) | Team Jumbo–Visma | 89 |
| 4 | Neilson Powless (USA) | EF Education–EasyPost | 58 |
| 5 | Tadej Pogačar (SLO) | UAE Team Emirates | 55 |
| 6 | Simon Yates (GBR) | Team Jayco–AlUla | 44 |
| 7 | Tobias Halland Johannessen (NOR) | Uno-X Pro Cycling Team | 38 |
| 8 | Jai Hindley (AUS) | Bora–Hansgrohe | 31 |
| 9 | Michał Kwiatkowski (POL) | Ineos Grenadiers | 30 |
| 10 | Mattias Skjelmose (DEN) | Lidl–Trek | 29 |

### Young rider classification

Final young rider classification (1–10) :
| Rank | Rider | Team | Time |
| 1 | Tadej Pogačar (SLO) | UAE Team Emirates | 82h 13' 11" |
| 2 | Carlos Rodríguez (ESP) | Ineos Grenadiers | + 5' 48" |
| 3 | Felix Gall (AUT) | AG2R Citroën Team | + 8' 40" |
| 4 | Tom Pidcock (GBR) | Ineos Grenadiers | + 40' 23" |
| 5 | Mattias Skjelmose (DEN) | Lidl–Trek | + 2h 07' 58" |
| 6 | Tobias Halland Johannessen (NOR) | Uno-X Pro Cycling Team | + 2h 08' 04" |
| 7 | Mathieu Burgaudeau (FRA) | Team TotalEnergies | + 2h 13' 44" |
| 8 | Clément Champoussin (FRA) | Arkéa–Samsic | + 2h 50' 38" |
| 9 | Matthew Dinham (AUS) | Team dsm–firmenich | + 3h 06' 03" |
| 10 | Maxim Van Gils (BEL) | Lotto–Dstny | + 3h 10' 20" |

### Team classification

Final team classification (1–10) :
| Rank | Team | Time |
| 1 | Team Jumbo–Visma | 247h 26' 17" |
| 2 | UAE Team Emirates | + 7' 13" |
| 3 | Team Bahrain Victorious | + 22' 01" |
| 4 | Ineos Grenadiers | + 26' 36" |
| 5 | Groupama–FDJ | + 50' 44" |
| 6 | AG2R Citroën Team | + 1h 44' 24" |
| 7 | Bora–Hansgrohe | + 1h 58' 32" |
| 8 | Team Jayco–AlUla | + 3h 14' 57" |
| 9 | Israel–Premier Tech | + 4h 27' 13" |
| 10 | Movistar Team | + 4h 31' 50" |