
Saturday, July 12: Stage 8, Saint-Méen-Le-Grand - Laval (Espace Mayenne), 171.4 km
Stage 8 map & profile | Stage 8 photos

Jonathan Milan wins stage eight. ASO photo
Marcus Aurelius' Meditations is available in both Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Rated ascent:
Weather at the finish city of Laval at 2:00 PM, local time: 30C (86F), sunny, with the wind from the east at 11 km/hr (8 mph). No rain is forecast.
The stage: Tour boss Christian Prudhomme writes: This is a very flat stage heading out of Brittany and into Mayenne on roads that are, for the most part, sheltered from the wind. All of the ingredients are there for the sprint teams to take control of the race. The likelihood is that the stage will finish with a bunch sprint, although the profile of the likely contenders could well be restricted by one specific feature – the finish line comes at the end of a kilometer-long, rising false flat.
The race: Eddie Dunbar (Jayco AlUla) did not start. "Following a crash in the final kilometres of yesterday’s stage, Dunbar has been suffering with pain in his wrist and a decision was taken to stop, for his safety" - Team Jayco AlUla
Medical updates: Two riders had to abandon during stage 7 - Mattia Cattaneo (Soudal Quick-Step), whose team reports he couldn’t continue with the injuries, and Jack Haig (Bahrain Victorious), whose team confirmed he suffered a concussion when several riders hit the deck yesterday with 6 kilometres to go.
Also involved in the crash, his teammate Santiago Buitrago “did not have concussion, but has superficial abrasions and contusions to the right thigh”. He should start today.
The same goes with Joao Almeida. “It’s confirmed he has an uncomplicated left-sided rib fracture, as well as some profound abrasions to his body”, UAE Team Emirates-XRG doctor explained yesterday evening. “Fortunately no concussion. We will be monitoring him carefully going forward. The next few days will be difficult for him, but at this point, he should be able to start.”
Also involved in the crash, Guillaume Martin-Guyonnet (Groupama-FDJ), Louis Barré (Intermarché-Wanty) and Eddie Dunbar (Jayco AlUla) suffered abrasions, while Warren Barguil (Picnic PostNL) needed stitches on a shin.
176 riders began stage 7 at 1:24 PM.

Ewan Costiou (Arkea-B&B Hotels) takes a selfie on the start line. Looks like a beautiful day for a bike race.
Here's the race organizer's stage eight report:
Third sprint was the charm for Jonathan Milan, who powered to victory in Laval to claim his maiden stage win in the Tour de France. Lidl-Trek’s powerhouse not only raised his arms in triumph for the first time, he also ended Italy’s longest drought in the history of the race. 113 stages had passed since Vincenzo Nibali’s success in Val Thorens (stage 20 of the Tour 2019), which corresponds to the emergency number for the police in Italy.
On day 114, Milan answered the call! With his stellar record on the track, Milan also continues the trend of winning world champions in this Tour. Wout Van Aert (Visma-Lease a Bike) and Kaden Groves (Alpecin-Deceuninck) completed the stage top 3 while Mathieu Burgaudeau and Matteo Vercher (Total Energies) shared the combativity award as recognition of their grit.
The race:
After a couple of explosive stages in perfect weather conditions, the Tour de France 2025 returns to a flat stage between Saint-Méen-le-Grand (Louison Bobet’s hometown), promised to sprinters. Temperatures are on the rise - the thermometer reads over 30°C. Headwinds also hinder the progress of the peloton.
Milan calls the shots
Quinn Simmons (Lidl-Trek) and Jonas Rutsch (Intermarché-Wanty) quickly take the reins to drive the bunch at 41 km/h en route to the intermediate sprint set in Vitré (km 85.5).
As usual since the start of the Tour, Jonathan Milan (Lidl-Trek) is the fastest on the line. The Italian powerhouse has claimed 112 of his 142 points in intermediate sprints (the other 30 came with his 2nd place in Dunkirk). This time, he gets the better of Tim Merlier (Soudal Quick-Step), Anthony Turgis (Total Energies) and Biniam Girmay (Intermarché-Wanty).
Burgaudeau and Vercher show their grit
After the intermediate sprint, Mathieu Burgaudeau (Total Energies) accelerates. Simmons controls his move but the French attacker goes again at km 90, this time with a teammate, Matteo Vercher. The two riders open a gap of 1 minute as they go through Ballots (km 114.9).

TotalEnergies teammates Mathieu Burgaudeau & Matteo Vercher have about a 50-second lead on the pack with 60 km to go.
Over the only climb of the day - Côte de Nuillé-sur-Vicoin (summit with 16.4km to go) -, the gap is down to 40’’ with many teams taking the front positions. Burgaudeau and Vercher both receive the combative awards - a situation that previously happened in 1978 (Yves Hézard and Raymond Martin in Super Besse), 2011 (Juan Antonio Flecha and Johnny Hoogerland in Saint-Flour) and 2016 (Julian Alaphilippe and Tony Martin in Bern).

5 km top go: The break has been caught and the pack is getting ready for a sprint.
Burgaudeau continues solo as Vercher is done with 13 kilometres to go. He’s eventually caught 9 kilometres further into the stage. The pace is impressive all the way to the slightly rising finish in Laval, where Milan displays his raw power and ends Italy’s drought, 114 stages after Vincenzo Nibali’s success in Val Thorens (stage 20 of the Tour 2019).
Complete Results:
171.4 kilometers raced at an average speed of 44.629 km/hr
| 1 | Jonathan Milan | Lidl-Trek | 3hr 50min 26sec |
| 2 | Wout van Aert | Team Visma | Lease a Bike | s.t. |
| 3 | Kaden Groves | Alpecin-Deceuninck | s.t. |
| 4 | Pascal Ackermann | Israel-Premier Tech | s.t. |
| 5 | Arnaud De Lie | Lotto | s.t. |
| 6 | Tobias Lund Andresen | Team Picnic PostNL | s.t. |
| 7 | Bryan Coquard | Cofidis | s.t. |
| 8 | Alberto Dainese | Tudor Pro Cycling Team | s.t. |
| 9 | Vincenzo Albanese | EF Education-EasyPost | s.t. |
| 10 | Stian Fredheim | Uno-X Mobility | s.t. |
| 11 | Danny van Poppel | Red Bull-BORA-hansgrohe | s.t. |
| 12 | Phil Bauhaus | Bahrain Victorious | s.t. |
| 13 | Lewis Askey | Groupama-FDJ | s.t. |
| 14 | Bastien Tronchon | Decathlon AG2R La Mondiale | s.t. |
| 15 | Sam Watson | INEOS Grenadiers | s.t. |
| 16 | Dylan Groenewegen | Team Jayco-AlUla | s.t. |
| 17 | Anthony Turgis | Team TotalEnergies | s.t. |
| 18 | Cees Bol | XDS Astana Team | s.t. |
| 19 | Biniam Girmay | Intermarché-Wanty | s.t. |
| 20 | Arnaud Démare | Arkea-B&B Hotels | s.t. |
| 21 | Mathieu van der Poel | Alpecin-Deceuninck | s.t. |
| 22 | Alexis Renard | Cofidis | s.t. |
| 23 | Kévin Vauquelin | Arkea-B&B Hotels | s.t. |
| 24 | Yevgeniy Fedorov | XDS Astana Team | s.t. |
| 25 | Tobias Halland Johannessen | Uno-X Mobility | s.t. |
| 26 | Emanuel Buchmann | Cofidis | s.t. |
| 27 | Guillaume Martin-Guyonnet | Groupama-FDJ | s.t. |
| 28 | Ben Healy | EF Education-EasyPost | s.t. |
| 29 | Remco Evenepoel | Soudal Quick-Step | s.t. |
| 30 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | s.t. |
| 31 | Clément Berthet | Decathlon AG2R La Mondiale | s.t. |
| 32 | Tim Wellens | UAE Team Emirates-XRG | s.t. |
| 33 | Enric Mas | Movistar Team | s.t. |
| 34 | Jhonatan Narvaez | UAE Team Emirates-XRG | s.t. |
| 35 | Jordan Jegat | Team TotalEnergies | s.t. |
| 36 | Oscar Onley | Team Picnic PostNL | s.t. |
| 37 | Mattias Skjelmose | Lidl-Trek | s.t. |
| 38 | Jonas Vingegaard | Team Visma | Lease a Bike | s.t. |
| 39 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 40 | Cristian Rodriguez | Arkea-B&B Hotels | s.t. |
| 41 | Cyril Barthe | Groupama-FDJ | s.t. |
| 42 | Tadej Pogacar | UAE Team Emirates-XRG | s.t. |
| 43 | Florian Lipowitz | Red Bull-BORA-hansgrohe | s.t. |
| 44 | Jake Stewart | Israel-Premier Tech | s.t. |
| 45 | Carlos Rodriguez | INEOS Grenadiers | s.t. |
| 46 | Laurence Pithie | Red Bull-BORA-hansgrohe | s.t. |
| 47 | Primoz Roglic | Red Bull-BORA-hansgrohe | s.t. |
| 48 | Ilan Van Wilder | Soudal Quick-Step | s.t. |
| 49 | Victor Campenaerts | Team Visma | Lease a Bike | s.t. |
| 50 | Felix Gall | Decathlon AG2R La Mondiale | s.t. |
| 51 | Simone Velasco | XDS Astana Team | s.t. |
| 52 | Thomas Gachignard | Team TotalEnergies | @ 15sec |
| 53 | Oliver Naesen | Decathlon AG2R La Mondiale | s.t. |
| 54 | Mike Teunissen | XDS Astana Team | s.t. |
| 55 | Ben O'Connor | Team Jayco-AlUla | s.t. |
| 56 | Tim Merlier | Soudal Quick-Step | 0:23 |
| 57 | Jenno Berckmoes | Lotto | s.t. |
| 58 | Marijn van den Berg | EF Education-EasyPost | s.t. |
| 59 | Pavel Bittner | Team Picnic PostNL | 0:33 |
| 60 | Clément Venturini | Arkea-B&B Hotels | s.t. |
| 61 | Gianni Moscon | Red Bull-BORA-hansgrohe | s.t. |
| 62 | Axel Laurance | INEOS Grenadiers | 0:41 |
| 63 | Quentin Pacher | Groupama-FDJ | s.t. |
| 64 | Neilson Powless | EF Education-EasyPost | s.t. |
| 65 | Pascal Eenkhoorn | Soudal Quick-Step | s.t. |
| 66 | Nils Politt | UAE Team Emirates-XRG | s.t. |
| 67 | Jasper Stuyven | Lidl-Trek | s.t. |
| 68 | Markus Hoelgaard | Uno-X Mobility | 0:48 |
| 69 | Niklas Märkl | Team Picnic PostNL | 0:53 |
| 70 | Warren Barguil | Team Picnic PostNL | s.t. |
| 71 | Valentin Madouas | Groupama-FDJ | s.t. |
| 72 | Thymen Arensman | INEOS Grenadiers | s.t. |
| 73 | Romain Grégoire | Groupama-FDJ | s.t. |
| 74 | Eduardo Sepulveda | Lotto | s.t. |
| 75 | Tiesj Benoot | Team Visma | Lease a Bike | s.t. |
| 76 | Pavel Sivakov | UAE Team Emirates-XRG | s.t. |
| 77 | Sergio Higuita | XDS Astana Team | s.t. |
| 78 | Matteo Trentin | Tudor Pro Cycling Team | s.t. |
| 79 | Simone Consonni | Lidl-Trek | s.t. |
| 80 | Alexandre Delettre | Team TotalEnergies | s.t. |
| 81 | Steff Cras | Team TotalEnergies | s.t. |
| 82 | Bert Van Lerberghe | Soudal Quick-Step | s.t. |
| 83 | Bruno Armirail | Decathlon AG2R La Mondiale | s.t. |
| 84 | Marius Mayrhofer | Tudor Pro Cycling Team | s.t. |
| 85 | Callum Scotson | Decathlon AG2R La Mondiale | s.t. |
| 86 | Adam Yates | UAE Team Emirates-XRG | s.t. |
| 87 | Vito Braet | Intermarché-Wanty | 1:11 |
| 88 | Joe Blackmore | Israel-Premier Tech | s.t. |
| 89 | Kasper Asgreen | EF Education-EasyPost | s.t. |
| 90 | Søren Wærenskjold | Uno-X Mobility | s.t. |
| 91 | Magnus Cort | Uno-X Mobility | s.t. |
| 92 | Sean Flynn | Team Picnic PostNL | s.t. |
| 93 | Anders Halland Johannessen | Uno-X Mobility | s.t. |
| 94 | Frank van den Broek | Team Picnic PostNL | s.t. |
| 95 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | s.t. |
| 96 | Amaury Capiot | Arkea-B&B Hotels | s.t. |
| 97 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 98 | Jonas Abrahamsen | Uno-X Mobility | s.t. |
| 99 | Simon Yates | Team Visma | Lease a Bike | s.t. |
| 100 | Max Schachmann | Soudal Quick-Step | s.t. |
| 101 | Brent Van Moer | Lotto | s.t. |
| 102 | Valentin Paret-Peintre | Soudal Quick-Step | s.t. |
| 103 | Santiago Buitrago | Bahrain Victorious | s.t. |
| 104 | Silvan Dillier | Alpecin-Deceuninck | s.t. |
| 105 | Luka Mezgec | Team Jayco-AlUla | s.t. |
| 106 | Elmar Reinders | Team Jayco-AlUla | s.t. |
| 107 | Toms Skujins | Lidl-Trek | s.t. |
| 108 | Nelson Oliveira | Movistar Team | s.t. |
| 109 | Iván García Cortina | Movistar Team | s.t. |
| 110 | Mick van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 111 | Raúl García | Arkea-B&B Hotels | s.t. |
| 112 | Edward Theuns | Lidl-Trek | 1:35 |
| 113 | Fred Wright | Bahrain Victorious | 1:42 |
| 114 | Robert Stannard | Bahrain Victorious | s.t. |
| 115 | Harry Sweeny | EF Education-EasyPost | s.t. |
| 116 | Jonas Rickaert | Alpecin-Deceuninck | 1:53 |
| 117 | Xandro Meurisse | Alpecin-Deceuninck | s.t. |
| 118 | Alexey Lutsenko | Israel-Premier Tech | s.t. |
| 119 | Emiel Verstrynge | Alpecin-Deceuninck | s.t. |
| 120 | Ion Izagirre | Cofidis | s.t. |
| 121 | Sébastien Grignard | Lotto | s.t. |
| 122 | Alex Aranburu | Cofidis | s.t. |
| 123 | Marc Soler | UAE Team Emirates-XRG | s.t. |
| 124 | Edoardo Affini | Team Visma | Lease a Bike | 2:02 |
| 125 | Andreas Leknessund | Uno-X Mobility | s.t. |
| 126 | Thibau Nys | Lidl-Trek | s.t. |
| 127 | Damien Touzé | Cofidis | 2:13 |
| 128 | Paul Penhoët | Groupama-FDJ | s.t. |
| 129 | Tim Naberman | Team Picnic PostNL | 2:21 |
| 130 | Matis Louvel | Israel-Premier Tech | s.t. |
| 131 | Dylan Teuns | Cofidis | s.t. |
| 132 | Jarrad Drizners | Lotto | s.t. |
| 133 | Georg Zimmermann | Intermarché-Wanty | s.t. |
| 134 | Marco Haller | Tudor Pro Cycling Team | s.t. |
| 135 | William Barta | Movistar Team | s.t. |
| 136 | Geraint Thomas | INEOS Grenadiers | s.t. |
| 137 | Matej Mohoric | Bahrain Victorious | s.t. |
| 138 | Roel van Sintmaartensdijk | Intermarché-Wanty | s.t. |
| 139 | Tobias Foss | INEOS Grenadiers | 2:45 |
| 140 | Marc Hirschi | Tudor Pro Cycling Team | 2:52 |
| 141 | Laurenz Rex | Intermarché-Wanty | 3:03 |
| 142 | Hugo Page | Intermarché-Wanty | s.t. |
| 143 | Connor Swift | INEOS Grenadiers | s.t. |
| 144 | Fabian Lienhard | Tudor Pro Cycling Team | 3:24 |
| 145 | Luke Durbridge | Team Jayco-AlUla | s.t. |
| 146 | Kamil Gradek | Bahrain Victorious | 3:35 |
| 147 | Lenny Martinez | Bahrain Victorious | s.t. |
| 148 | Jordi Meeus | Red Bull-BORA-hansgrohe | 4:11 |
| 149 | Gianni Vermeersch | Alpecin-Deceuninck | s.t. |
| 150 | Alex Baudin | EF Education-EasyPost | s.t. |
| 151 | Clément Russo | Groupama-FDJ | 4:21 |
| 152 | Gregor Mühlberger | Movistar Team | s.t. |
| 153 | Lennert Van Eetvelt | Lotto | s.t. |
| 154 | Einer Rubio | Movistar Team | s.t. |
| 155 | Michael Woods | Israel-Premier Tech | s.t. |
| 156 | Mathis Le Berre | Arkea-B&B Hotels | s.t. |
| 157 | Mathieu Burgaudeau | Team TotalEnergies | s.t. |
| 158 | Ewen Costiou | Arkea-B&B Hotels | 4:28 |
| 159 | Guillaume Boivin | Israel-Premier Tech | 4:32 |
| 160 | Quinn Simmons | Lidl-Trek | 4:39 |
| 161 | Harold Tejada | XDS Astana Team | s.t. |
| 162 | Iván Romeo | Movistar Team | 4:47 |
| 163 | Pablo Castrillo | Movistar Team | s.t. |
| 164 | Clément Champoussin | XDS Astana Team | 5:07 |
| 165 | Davide Ballerini | XDS Astana Team | s.t. |
| 166 | Benjamin Thomas | Cofidis | 6:28 |
| 167 | Mattéo Vercher | Team TotalEnergies | s.t. |
| 168 | João Almeida | UAE Team Emirates-XRG | 6:42 |
| 169 | Lucas Plapp | Team Jayco-AlUla | s.t. |
| 170 | Michael Valgren | EF Education-EasyPost | s.t. |
| 171 | Louis Barré | Intermarché-Wanty | 6:46 |
| 172 | Krists Neilands | Israel-Premier Tech | 7:27 |
| 173 | Michael Storer | Tudor Pro Cycling Team | s.t. |
| 174 | Julian Alaphilippe | Tudor Pro Cycling Team | s.t. |
| 175 | Mauro Schmid | Team Jayco-AlUla | s.t. |
| 176 | Jonas Rutsch | Intermarché-Wanty | 13:53 |
GC after stage 8:
1,346.6 kilometers raced so far at an average speed of 45.175 km/hr
| 1 | Tadej Pogacar | UAE Team Emirates-XRG | 29hr 48min 30sec |
| 2 | Remco Evenepoel | Soudal Quick-Step | @ 54sec |
| 3 | Kévin Vauquelin | Arkea-B&B Hotels | 1:11 |
| 4 | Jonas Vingegaard | Team Visma | Lease a Bike | 1:17 |
| 5 | Mathieu van der Poel | Alpecin-Deceuninck | 1:29 |
| 6 | Matteo Jorgenson | Team Visma | Lease a Bike | 1:34 |
| 7 | Oscar Onley | Team Picnic PostNL | 2:49 |
| 8 | Florian Lipowitz | Red Bull-BORA-hansgrohe | 3:02 |
| 9 | Primoz Roglic | Red Bull-BORA-hansgrohe | 3:06 |
| 10 | Mattias Skjelmose | Lidl-Trek | 3:43 |
| 11 | Ben Healy | EF Education-EasyPost | 3:55 |
| 12 | Tobias Halland Johannessen | Uno-X Mobility | 4:28 |
| 13 | Enric Mas | Movistar Team | 4:35 |
| 14 | Felix Gall | Decathlon AG2R La Mondiale | 4:49 |
| 15 | Carlos Rodriguez | INEOS Grenadiers | 4:51 |
| 16 | Jordan Jegat | Team TotalEnergies | 5:39 |
| 17 | Aurélien Paret-Peintre | Decathlon AG2R La Mondiale | 7:23 |
| 18 | Jhonatan Narvaez | UAE Team Emirates-XRG | 8:11 |
| 19 | Guillaume Martin-Guyonnet | Groupama-FDJ | 8:13 |
| 20 | Ben O'Connor | Team Jayco-AlUla | 8:25 |
| 21 | Emanuel Buchmann | Cofidis | 8:35 |
| 22 | Tiesj Benoot | Team Visma | Lease a Bike | 9:59 |
| 23 | Valentin Madouas | Groupama-FDJ | 10:28 |
| 24 | Cristian Rodriguez | Arkea-B&B Hotels | 10:52 |
| 25 | Romain Grégoire | Groupama-FDJ | s.t. |
| 26 | Jenno Berckmoes | Lotto | 11:23 |
| 27 | Xandro Meurisse | Alpecin-Deceuninck | 13:10 |
| 28 | Steff Cras | Team TotalEnergies | 15:48 |
| 29 | Quentin Pacher | Groupama-FDJ | 16:29 |
| 30 | Neilson Powless | EF Education-EasyPost | 16:58 |
| 31 | Warren Barguil | Team Picnic PostNL | 17:01 |
| 32 | Tim Wellens | UAE Team Emirates-XRG | 17:11 |
| 33 | Alexandre Delettre | Team TotalEnergies | 17:49 |
| 34 | Sepp Kuss | Team Visma | Lease a Bike | 17:56 |
| 35 | Simon Yates | Team Visma | Lease a Bike | 18:00 |
| 36 | Santiago Buitrago | Bahrain Victorious | 18:30 |
| 37 | João Almeida | UAE Team Emirates-XRG | 19:03 |
| 38 | Clément Berthet | Decathlon AG2R La Mondiale | 19:09 |
| 39 | Clément Venturini | Arkea-B&B Hotels | 19:34 |
| 40 | Axel Laurance | INEOS Grenadiers | 19:38 |
| 41 | Pascal Eenkhoorn | Soudal Quick-Step | 21:08 |
| 42 | Joe Blackmore | Israel-Premier Tech | 22:21 |
| 43 | Markus Hoelgaard | Uno-X Mobility | 22:26 |
| 44 | Ilan Van Wilder | Soudal Quick-Step | 23:03 |
| 45 | Alex Baudin | EF Education-EasyPost | 23:23 |
| 46 | Sergio Higuita | XDS Astana Team | 23:27 |
| 47 | Harry Sweeny | EF Education-EasyPost | 23:43 |
| 48 | Aleksandr Vlasov | Red Bull-BORA-hansgrohe | 23:52 |
| 49 | Geraint Thomas | INEOS Grenadiers | 24:09 |
| 50 | Simone Velasco | XDS Astana Team | 24:26 |
| 51 | Callum Scotson | Decathlon AG2R La Mondiale | 25:05 |
| 52 | Thymen Arensman | INEOS Grenadiers | 25:43 |
| 53 | Wout van Aert | Team Visma | Lease a Bike | 26:30 |
| 54 | Toms Skujins | Lidl-Trek | 26:50 |
| 55 | Matteo Trentin | Tudor Pro Cycling Team | 27:21 |
| 56 | Adam Yates | UAE Team Emirates-XRG | 27:25 |
| 57 | Jasper Stuyven | Lidl-Trek | 28:38 |
| 58 | Mathieu Burgaudeau | Team TotalEnergies | 28:47 |
| 59 | Oliver Naesen | Decathlon AG2R La Mondiale | 28:48 |
| 60 | Nelson Oliveira | Movistar Team | 29:26 |
| 61 | Alexey Lutsenko | Israel-Premier Tech | 29:33 |
| 62 | Tobias Lund Andresen | Team Picnic PostNL | 30:06 |
| 63 | Victor Campenaerts | Team Visma | Lease a Bike | 30:09 |
| 64 | Gregor Mühlberger | Movistar Team | 30:18 |
| 65 | Frank van den Broek | Team Picnic PostNL | 30:21 |
| 66 | Bastien Tronchon | Decathlon AG2R La Mondiale | 30:36 |
| 67 | Alex Aranburu | Cofidis | 31:02 |
| 68 | Julian Alaphilippe | Tudor Pro Cycling Team | 32:08 |
| 69 | Quinn Simmons | Lidl-Trek | 32:16 |
| 70 | Thomas Gachignard | Team TotalEnergies | 32:33 |
| 71 | Raúl García | Arkea-B&B Hotels | 33:10 |
| 72 | Bruno Armirail | Decathlon AG2R La Mondiale | 33:46 |
| 73 | Cyril Barthe | Groupama-FDJ | 34:30 |
| 74 | Tobias Foss | INEOS Grenadiers | 34:50 |
| 75 | Ion Izagirre | Cofidis | 34:52 |
| 76 | Marc Soler | UAE Team Emirates-XRG | s.t. |
| 77 | Max Schachmann | Soudal Quick-Step | 35:15 |
| 78 | Krists Neilands | Israel-Premier Tech | 35:32 |
| 79 | Clément Champoussin | XDS Astana Team | 36:12 |
| 80 | Marc Hirschi | Tudor Pro Cycling Team | 37:41 |
| 81 | Gianni Moscon | Red Bull-BORA-hansgrohe | 37:47 |
| 82 | Kasper Asgreen | EF Education-EasyPost | 38:05 |
| 83 | Andreas Leknessund | Uno-X Mobility | 39:07 |
| 84 | Thibau Nys | Lidl-Trek | 40:17 |
| 85 | Laurence Pithie | Red Bull-BORA-hansgrohe | 41:02 |
| 86 | Damien Touzé | Cofidis | 41:55 |
| 87 | Robert Stannard | Bahrain Victorious | 42:21 |
| 88 | Michael Woods | Israel-Premier Tech | 43:00 |
| 89 | Connor Swift | INEOS Grenadiers | 43:12 |
| 90 | Iván García Cortina | Movistar Team | 43:14 |
| 91 | Harold Tejada | XDS Astana Team | 43:30 |
| 92 | Dylan Teuns | Cofidis | 44:11 |
| 93 | Anders Halland Johannessen | Uno-X Mobility | 44:30 |
| 94 | Pavel Sivakov | UAE Team Emirates-XRG | 44:48 |
| 95 | Mathis Le Berre | Arkea-B&B Hotels | 45:18 |
| 96 | Marco Haller | Tudor Pro Cycling Team | 45:35 |
| 97 | Bryan Coquard | Cofidis | 45:37 |
| 98 | Marius Mayrhofer | Tudor Pro Cycling Team | 45:49 |
| 99 | Mauro Schmid | Team Jayco-AlUla | 45:50 |
| 100 | Valentin Paret-Peintre | Soudal Quick-Step | 46:08 |
| 101 | Jonas Abrahamsen | Uno-X Mobility | 46:11 |
| 102 | Emiel Verstrynge | Alpecin-Deceuninck | 46:22 |
| 103 | Kaden Groves | Alpecin-Deceuninck | 46:25 |
| 104 | Michael Valgren | EF Education-EasyPost | 47:21 |
| 105 | Gianni Vermeersch | Alpecin-Deceuninck | 47:24 |
| 106 | Fred Wright | Bahrain Victorious | 47:40 |
| 107 | Matis Louvel | Israel-Premier Tech | 47:46 |
| 108 | Louis Barré | Intermarché-Wanty | 47:59 |
| 109 | Iván Romeo | Movistar Team | 48:05 |
| 110 | Mike Teunissen | XDS Astana Team | 48:15 |
| 111 | Georg Zimmermann | Intermarché-Wanty | 50:17 |
| 112 | Vincenzo Albanese | EF Education-EasyPost | 50:28 |
| 113 | Ewen Costiou | Arkea-B&B Hotels | s.t. |
| 114 | Matej Mohoric | Bahrain Victorious | 50:29 |
| 115 | Brent Van Moer | Lotto | 50:33 |
| 116 | Anthony Turgis | Team TotalEnergies | 50:51 |
| 117 | Nils Politt | UAE Team Emirates-XRG | 51:46 |
| 118 | William Barta | Movistar Team | 51:57 |
| 119 | Einer Rubio | Movistar Team | 53:16 |
| 120 | Jonas Rickaert | Alpecin-Deceuninck | 53:38 |
| 121 | Lucas Plapp | Team Jayco-AlUla | 54:28 |
| 122 | Niklas Märkl | Team Picnic PostNL | 55:02 |
| 123 | Michael Storer | Tudor Pro Cycling Team | 55:07 |
| 124 | Pablo Castrillo | Movistar Team | 55:34 |
| 125 | Lenny Martinez | Bahrain Victorious | 55:41 |
| 126 | Paul Penhoët | Groupama-FDJ | 58:41 |
| 127 | Clément Russo | Groupama-FDJ | 58:50 |
| 128 | Pascal Ackermann | Israel-Premier Tech | 59:25 |
| 129 | Danny van Poppel | Red Bull-BORA-hansgrohe | 59:43 |
| 130 | Benjamin Thomas | Cofidis | 59:56 |
| 131 | Sam Watson | INEOS Grenadiers | 1:00:16 |
| 132 | Sean Flynn | Team Picnic PostNL | 1:00:35 |
| 133 | Jonas Rutsch | Intermarché-Wanty | 1:00:45 |
| 134 | Eduardo Sepulveda | Lotto | 1:01:14 |
| 135 | Amaury Capiot | Arkea-B&B Hotels | 1:02:02 |
| 136 | Tim Naberman | Team Picnic PostNL | 1:02:11 |
| 137 | Alberto Dainese | Tudor Pro Cycling Team | 1:02:22 |
| 138 | Edoardo Affini | Team Visma | Lease a Bike | 1:02:32 |
| 139 | Jake Stewart | Israel-Premier Tech | 1:03:28 |
| 140 | Marijn van den Berg | EF Education-EasyPost | 1:03:31 |
| 141 | Elmar Reinders | Team Jayco-AlUla | 1:03:40 |
| 142 | Søren Wærenskjold | Uno-X Mobility | 1:04:45 |
| 143 | Luka Mezgec | Team Jayco-AlUla | 1:05:06 |
| 144 | Pavel Bittner | Team Picnic PostNL | 1:05:15 |
| 145 | Lewis Askey | Groupama-FDJ | 1:05:21 |
| 146 | Stian Fredheim | Uno-X Mobility | 1:06:06 |
| 147 | Jonathan Milan | Lidl-Trek | 1:06:46 |
| 148 | Alexis Renard | Cofidis | 1:06:47 |
| 149 | Biniam Girmay | Intermarché-Wanty | 1:06:54 |
| 150 | Tim Merlier | Soudal Quick-Step | 1:07:24 |
| 151 | Magnus Cort | Uno-X Mobility | 1:07:50 |
| 152 | Dylan Groenewegen | Team Jayco-AlUla | 1:07:51 |
| 153 | Bert Van Lerberghe | Soudal Quick-Step | 1:08:21 |
| 154 | Vito Braet | Intermarché-Wanty | 1:09:03 |
| 155 | Hugo Page | Intermarché-Wanty | 1:09:30 |
| 156 | Arnaud Démare | Arkea-B&B Hotels | 1:09:50 |
| 157 | Mick van Dijke | Red Bull-BORA-hansgrohe | 1:09:55 |
| 158 | Cees Bol | XDS Astana Team | 1:10:12 |
| 159 | Lennert Van Eetvelt | Lotto | 1:10:42 |
| 160 | Phil Bauhaus | Bahrain Victorious | 1:10:43 |
| 161 | Luke Durbridge | Team Jayco-AlUla | 1:10:52 |
| 162 | Laurenz Rex | Intermarché-Wanty | 1:11:03 |
| 163 | Jarrad Drizners | Lotto | 1:12:11 |
| 164 | Sébastien Grignard | Lotto | 1:13:36 |
| 165 | Fabian Lienhard | Tudor Pro Cycling Team | 1:13:40 |
| 166 | Guillaume Boivin | Israel-Premier Tech | 1:14:05 |
| 167 | Simone Consonni | Lidl-Trek | 1:14:20 |
| 168 | Arnaud De Lie | Lotto | 1:15:00 |
| 169 | Kamil Gradek | Bahrain Victorious | 1:16:20 |
| 170 | Edward Theuns | Lidl-Trek | 1:17:10 |
| 171 | Silvan Dillier | Alpecin-Deceuninck | 1:17:12 |
| 172 | Davide Ballerini | XDS Astana Team | 1:17:14 |
| 173 | Yevgeniy Fedorov | XDS Astana Team | 1:17:35 |
| 174 | Roel van Sintmaartensdijk | Intermarché-Wanty | 1:18:55 |
| 175 | Jordi Meeus | Red Bull-BORA-hansgrohe | 1:19:30 |
| 176 | Mattéo Vercher | Team TotalEnergies | 1:23:27 |
Stage 8 map & profile:

Stage 8 map

Stage 8 profile
Stage 8 photos by Fotoreporter Sirotti:

GC leader Tadej Pogacar before the stage start.

Current best young rider Remco Evenepoel

Mathieu van der Poel

Jonas Vingegaard

The vikings of Team Uo-X Mobility before the start.

Team Groupama-FDJ

The peloton gets rolling to start stage eight.

The sprint. Jonathan Milan clearly has this under control.

Jonathan Milan wins stage eight.

Stage winner Jonathan Milan just after the stage with an escort of Tour officials.

Breakaway riders Mathieu Burgaudeau & Matteo Vercher shared the combativity prize.

Stage winner Joanthan Milan remains the points classification leader and will start stage nine in the green jersey.

Tadej Pogacar will start stage nine in yellow.