
Back to 2025 Vuelta a España
Tuesday, September 9: Stage 16, Poio - Mos Castro de Herville, 167.9 153.1 km
Stage 16 map & profile | Stage 16 photos

Egan Bernal beats Mikel Landa for the stage win.
Les Woodland's book Cycling's 50 Triumphs and Tragedies: The rise and fall of bicycle racing's champions is available in print, Kindle eBook & audiobook versions. To get your copy, just click on the Amazon link on the right.
Weather at the city of Abaixo, on the route, 51 km from the finish, at 2:15 PM, local time: 17C (63F), cloudy, with the win from the southwest at 14 km/hr (9 mph). There is a 30% chance of rain.
Rated ascents:
The stage: In La Vuelta 21, we lived a thrilling stage headed to Mos on terrain that will, once again, receive the peloton in La Vuelta 25. The stage features four point-incurring mountain passes and a very rugged terrain in the second-half of the stage, which will make it very difficult to bring down the day’s escape, should there be one.
The race: Not starting: Victor Campenaerts (Visma | Lease a Bike) & Gianmarco Garofoli (Soudal Quick-Step). Both riders were deemed too sick to race.
Here's the race organiser's stage 16 report:
Stage 16 of La Vuelta 25 had to be shortened due to protests, but it didn’t prevent Egan Bernal (Ineos Grenadiers) from taking his 58th professional victory, and his first in the Spanish Grand Tour. The Colombian icon made the decisive breakaway on the roads of Galicia, where he proved to be a driving force for the attackers, before eventually getting the better of Mikel Landa (Soudal Quick-Step) in a two-man sprint. The finish was moved to Mos, 8 kilometres before the initial arrival in Castro de Herville, due to protests in the final kilometres of the stage.
Already a winner in the Giro, Bernal was also leading stage 19 of the Tour de France 2019 when it was shortened due to weather conditions. This marks his first success in an international race since a life-changing crash in January 2022, after returning to winning ways at the Colombian national championships at the beginning of 2025. Among the contenders for the overall standings, Felix Gall (Decathlon AG2R La Mondiale) lost almost a minute, while Jonas Vingegaard (Visma-Lease a Bike) retained La Roja.
The race:
The 155-man peloton dive into the third and final week of La Vuelta 25 with a punchy course on the roads of Galicia: 167.9 km of racing from Poio to Mos, with four categorised climbs and some 3,500 metres of elevation. Four years ago, the same finish, after a similar course, had turned the race upside down. What do the riders have in store this Tuesday?
Another hard battle for the break
Attackers eye one of their last opportunities to shine. And a fierce battle for the break unfolds. After a flurry of attacks and counter-attacks, Andrea Bagioli (Lidl-Trek), Bob Jungels (Ineos Grenadiers), Finlay Pickering (Bahrain Victorious) and Victor Guernalec (Arkéa-B&B Hotels) manage to open a proper gap at km 50.
Thirteen chasers bridge the gap to make it a 17-man breakaway with Marc Soler (UAE Team Emirates-XRG), Jefferson Cepeda (Movistar Team), Nico Denz (Red Bull-Bora-Hansgrohe), Mikel Landa, Mauri Vansevenant (Soudal Quick-Step), Egan Bernal (Ineos Grenadiers), Sean Quinn (EF Education-EasyPost), Clément Braz Afonso, Rudy Molard, Brieuc Rolland (Groupama-FDJ), Louis Rouland (Arkéa-B&B Hotels), Kevin Vermaeke (Picnic-PostNL) and Jake Stewart (Israel-Premier Tech).

Kilometer 99: A big break of good riders is 4min 15sec ahead of the peloton. They are: Egan Bernal, Bob Jungels, Marc Soler, Kevin Vermaerke, Rudy Molard, Jefferson Cepeda, Mikel Landa, Mauri Vansevenant, Finlay Pickering, Brieuc Rolland, Clément Braz Afonso, Andrea Bagioli, Sean Quinn, Nico Denz, Louis Rouland, Victor Guernalec & Jake Stewart. CX Cyclong photo
The Bernal show
Visma-Lease a Bike set an easier pace and the gap increases to 4 minutes en route to the first climb of the day, Alto de San Antoñino. The battle resumes on the second climb of the day, with Landa distancing his rivals 3 kilometres away from the summit of Alto do Graba. Bernal and then Braz Afonos join him before the summit. Braz Afonso and Denz come across on the downhill.
Soler drives a strong chase with Pickering, but they fail to bridge the gap. Denz and Rolland are dropped on the penultimate ascent, Alto de Prado, before the race organisation communicates on Radio Vuelta that the finish will be set 8 kilometres before the original arrival, due to protests.
Bernal rules the two-man sprint against Landa, while Rolland comes 3rd after Braz Afonso’s puncture in the finale. Bahrain Victorious set a strong pace in the bunch to defend Torstein Træen’s place of 10th in the overall standings and Felix Gall (Decathlon AG2R La Mondiale) loses 54’’ to his rivals.
Complete results:
153.1 kilometers raced at an average speed of 42.693 km/hr
| 1 | Egan Bernal | INEOS Grenadiers | 3hr 35min 10sec |
| 2 | Mikel Landa | Soudal Quick-Step | s.t. |
| 3 | Brieuc Rolland | Groupama-FDJ | @ 7sec |
| 4 | Nico Denz | Red Bull-BORA-hansgrohe | 1:02 |
| 5 | Clément Braz Afonso | Groupama-FDJ | s.t. |
| 6 | Bob Jungels | INEOS Grenadiers | 1:10 |
| 7 | Kevin Vermaerke | Team Picnic PostNL | 1:12 |
| 8 | Finlay Pickering | Bahrain Victorious | s.t. |
| 9 | Sean Quinn | EF Education-EasyPost | 2:48 |
| 10 | Rudy Molard | Groupama-FDJ | s.t. |
| 11 | Louis Rouland | Arkea-B&B Hotels | s.t. |
| 12 | Jefferson Cepeda | Movistar Team | s.t. |
| 13 | Andrea Bagioli | Lidl-Trek | s.t. |
| 14 | Victor Guernalec | Arkea-B&B Hotels | 4:10 |
| 15 | Jonas Vingegaard | Team Visma | Lease a Bike | 5:52 |
| 16 | João Almeida | UAE Team Emirates-XRG | s.t. |
| 17 | Tom Pidcock | Q36.5 Pro Cycling Team | s.t. |
| 18 | Harold Tejada | XDS Astana Team | s.t. |
| 19 | Matthew Riccitello | Israel-Premier Tech | s.t. |
| 20 | Jai Hindley | Red Bull-BORA-hansgrohe | s.t. |
| 21 | Sepp Kuss | Team Visma | Lease a Bike | s.t. |
| 22 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | s.t. |
| 23 | Matteo Jorgenson | Team Visma | Lease a Bike | s.t. |
| 24 | Torstein Træen | Bahrain Victorious | s.t. |
| 25 | Felix Grossschartner | UAE Team Emirates-XRG | s.t. |
| 26 | Marc Soler | UAE Team Emirates-XRG | 6:13 |
| 27 | Felix Gall | Decathlon AG2R La Mondiale | 6:46 |
| 28 | Abel Balderstone | Caja Rural-Seguros RGA | s.t. |
| 29 | Antonio Tiberi | Bahrain Victorious | s.t. |
| 30 | Jaume Guardeño | Caja Rural-Seguros RGA | s.t. |
| 31 | Santiago Buitrago | Bahrain Victorious | s.t. |
| 32 | Jake Stewart | Israel-Premier Tech | 6:57 |
| 33 | Léo Bisiaux | Decathlon AG2R La Mondiale | 7:19 |
| 34 | Junior Lecerf | Soudal Quick-Step | 8:07 |
| 35 | Joan Bou | Caja Rural-Seguros RGA | s.t. |
| 36 | Gal Glivar | Alpecin-Deceuninck | s.t. |
| 37 | Louis Meintjes | Intermarché-Wanty | s.t. |
| 38 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | s.t. |
| 39 | Fausto Masnada | XDS Astana Team | s.t. |
| 40 | Martin López | XDS Astana Team | s.t. |
| 41 | Damien Howson | Q36.5 Pro Cycling Team | 8:11 |
| 42 | Julien Bernard | Lidl-Trek | s.t. |
| 43 | Edward Dunbar | Team Jayco-AlUla | s.t. |
| 44 | Johannes Staune-Mittet | Decathlon AG2R La Mondiale | s.t. |
| 45 | Pierre Thierry | Arkea-B&B Hotels | s.t. |
| 46 | Louis Vervaeke | Soudal Quick-Step | s.t. |
| 47 | Jan Hirt | Israel-Premier Tech | 8:42 |
| 48 | Domen Novak | UAE Team Emirates-XRG | 10:49 |
| 49 | Wout Poels | XDS Astana Team | s.t. |
| 50 | José Luis Faura | Burgos Burpellet BH | 11:31 |
| 51 | Sergio Samitier | Cofidis | 11:58 |
| 52 | Chris Hamilton | Team Picnic PostNL | s.t. |
| 53 | Markel Beloki | EF Education-EasyPost | s.t. |
| 54 | Ivo Oliveira | UAE Team Emirates-XRG | s.t. |
| 55 | Nans Peters | Decathlon AG2R La Mondiale | s.t. |
| 56 | Kelland O'Brien | Team Jayco-AlUla | s.t. |
| 57 | Callum Scotson | Decathlon AG2R La Mondiale | s.t. |
| 58 | Michel Hessmann | Movistar Team | 12:36 |
| 59 | Carlos Canal | Movistar Team | s.t. |
| 60 | Bryan Coquard | Cofidis | 12:48 |
| 61 | Jesus Herrada | Cofidis | 13:35 |
| 62 | Christopher Juul-Jensen | Team Jayco-AlUla | s.t. |
| 63 | Hugo de la Calle | Burgos Burpellet BH | 14:25 |
| 64 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | s.t. |
| 65 | Mario Aparicio | Burgos Burpellet BH | s.t. |
| 66 | Roman Ermakov | Bahrain Victorious | s.t. |
| 67 | Timo Roosen | Team Picnic PostNL | s.t. |
| 68 | Gijs Leemreize | Team Picnic PostNL | s.t. |
| 69 | Nicola Conci | XDS Astana Team | s.t. |
| 70 | Jack Haig | Bahrain Victorious | s.t. |
| 71 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | s.t. |
| 72 | Victor Langellotti | INEOS Grenadiers | s.t. |
| 73 | Alex Molenaar | Caja Rural-Seguros RGA | s.t. |
| 74 | Thomas Silva | Caja Rural-Seguros RGA | s.t. |
| 75 | Simone Petilli | Intermarché-Wanty | s.t. |
| 76 | Mathijs Paasschens | Bahrain Victorious | s.t. |
| 77 | Marco Frigo | Israel-Premier Tech | s.t. |
| 78 | Nicolò Buratti | Bahrain Victorious | s.t. |
| 79 | Pier-André Côté | Israel-Premier Tech | 15:34 |
| 80 | Thibaud Gruel | Groupama-FDJ | s.t. |
| 81 | Mauri Vansevenant | Soudal Quick-Step | s.t. |
| 82 | Tobias Bayer | Alpecin-Deceuninck | 16:08 |
| 83 | Liam Slock | Lotto | s.t. |
| 84 | Patrick Gamper | Team Jayco-AlUla | s.t. |
| 85 | Magnus Sheffield | INEOS Grenadiers | s.t. |
| 86 | Eduardo Sepulveda | Lotto | s.t. |
| 87 | Madis Mihkels | EF Education-EasyPost | s.t. |
| 88 | James Shaw | EF Education-EasyPost | s.t. |
| 89 | Ben Tulett | Team Visma | Lease a Bike | s.t. |
| 90 | Lukas Nerurkar | EF Education-EasyPost | s.t. |
| 91 | Carlos Verona | Lidl-Trek | s.t. |
| 92 | Remi Cavagna | Groupama-FDJ | s.t. |
| 93 | Nadav Raisberg | Israel-Premier Tech | s.t. |
| 94 | Stefan Küng | Groupama-FDJ | s.t. |
| 95 | Joel Nicolau | Caja Rural-Seguros RGA | s.t. |
| 96 | Nickolas Zukowsky | Q36.5 Pro Cycling Team | s.t. |
| 97 | Marcel Camprubí | Q36.5 Pro Cycling Team | s.t. |
| 98 | David de la Cruz | Q36.5 Pro Cycling Team | s.t. |
| 99 | Jasper Philipsen | Alpecin-Deceuninck | s.t. |
| 100 | Mikkel Bjerg | UAE Team Emirates-XRG | s.t. |
| 101 | Jonas Gregaard | Lotto | s.t. |
| 102 | Alessandro Verre | Arkea-B&B Hotels | s.t. |
| 103 | Dylan van Baarle | Team Visma | Lease a Bike | s.t. |
| 104 | Dries De Pooter | Intermarché-Wanty | s.t. |
| 105 | David Gaudu | Groupama-FDJ | s.t. |
| 106 | Iván García Cortina | Movistar Team | s.t. |
| 107 | Emanuel Buchmann | Cofidis | s.t. |
| 108 | Wilco Kelderman | Team Visma | Lease a Bike | s.t. |
| 109 | Jenthe Biermans | Arkea-B&B Hotels | s.t. |
| 110 | David González | Q36.5 Pro Cycling Team | s.t. |
| 111 | Orluis Aular | Movistar Team | s.t. |
| 112 | Kamiel Bonneu | Intermarché-Wanty | s.t. |
| 113 | Jay Vine | UAE Team Emirates-XRG | s.t. |
| 114 | Jonas Rickaert | Alpecin-Deceuninck | s.t. |
| 115 | Tim van Dijke | Red Bull-BORA-hansgrohe | s.t. |
| 116 | Sander De Pestel | Decathlon AG2R La Mondiale | s.t. |
| 117 | Juan Martinez | Team Picnic PostNL | s.t. |
| 118 | Bruno Armirail | Decathlon AG2R La Mondiale | 16:23 |
| 119 | Giulio Ciccone | Lidl-Trek | 17:00 |
| 120 | Juan Ayuso | UAE Team Emirates-XRG | s.t. |
| 121 | Ben Turner | INEOS Grenadiers | s.t. |
| 122 | Fabio Christen | Q36.5 Pro Cycling Team | s.t. |
| 123 | Bjoern Koerdt | Team Picnic PostNL | 17:09 |
| 124 | Dion Smith | Intermarché-Wanty | s.t. |
| 125 | Filippo Ganna | INEOS Grenadiers | 17:54 |
| 126 | Elia Viviani | Lotto | s.t. |
| 127 | Matteo Sobrero | Red Bull-BORA-hansgrohe | s.t. |
| 128 | Xabier Azparren | Q36.5 Pro Cycling Team | s.t. |
| 129 | Arne Marit | Intermarché-Wanty | s.t. |
| 130 | Jasper De Buyst | Lotto | 17:57 |
| 131 | Jakub Otruba | Caja Rural-Seguros RGA | s.t. |
| 132 | Sergio Chumil | Burgos Burpellet BH | s.t. |
| 133 | Mads Pedersen | Lidl-Trek | 17:59 |
| 134 | Daan Hoole | Lidl-Trek | s.t. |
| 135 | Jardi Van Der Lee | EF Education-EasyPost | s.t. |
| 136 | Jordan Labrosse | Decathlon AG2R La Mondiale | s.t. |
| 137 | Léandre Lozouet | Arkea-B&B Hotels | s.t. |
| 138 | Ethan Vernon | Israel-Premier Tech | s.t. |
| 139 | Amanuel Ghebreigzabhier | Lidl-Trek | s.t. |
| 140 | Michal Kwiatkowski | INEOS Grenadiers | s.t. |
| 141 | Edward Planckaert | Alpecin-Deceuninck | s.t. |
| 142 | Oscar Riesebeek | Alpecin-Deceuninck | s.t. |
| 143 | Søren Kragh Andersen | Lidl-Trek | s.t. |
| 144 | Patrick Eddy | Team Picnic PostNL | s.t. |
| 145 | Lorenzo Fortunato | XDS Astana Team | s.t. |
| 146 | Stanislaw Aniolkowski | Cofidis | s.t. |
| 147 | Max Schachmann | Soudal Quick-Step | s.t. |
| 148 | Alec Segaert | Lotto | s.t. |
| 149 | Nicolas Vinokurov | XDS Astana Team | s.t. |
| 150 | Lars Craps | Lotto | s.t. |
| 151 | Anders Foldager | Team Jayco-AlUla | s.t. |
| 152 | Brandon Rivera | INEOS Grenadiers | s.t. |
| 153 | Huub Artz | Intermarché-Wanty | s.t. |
| 154 | Luca Van Boven | Intermarché-Wanty | s.t. |
GC after stage 16:
2,558 kilometers raced so far at an average speed of 41.745 km/hr
| 1 | Jonas Vingegaard | Team Visma | Lease a Bike | 61hr 16min 35sec |
| 2 | João Almeida | UAE Team Emirates-XRG | @ 48sec |
| 3 | Tom Pidcock | Q36.5 Pro Cycling Team | 2:38 |
| 4 | Jai Hindley | Red Bull-BORA-hansgrohe | 3:10 |
| 5 | Giulio Pellizzari | Red Bull-BORA-hansgrohe | 4:21 |
| 6 | Felix Gall | Decathlon AG2R La Mondiale | 4:24 |
| 7 | Matthew Riccitello | Israel-Premier Tech | 4:53 |
| 8 | Sepp Kuss | Team Visma | Lease a Bike | 5:46 |
| 9 | Torstein Træen | Bahrain Victorious | 6:33 |
| 10 | Junior Lecerf | Soudal Quick-Step | 8:04 |
| 11 | Matteo Jorgenson | Team Visma | Lease a Bike | 8:52 |
| 12 | Egan Bernal | INEOS Grenadiers | 9:36 |
| 13 | Harold Tejada | XDS Astana Team | 11:48 |
| 14 | Abel Balderstone | Caja Rural-Seguros RGA | 20:20 |
| 15 | Jaume Guardeño | Caja Rural-Seguros RGA | 23:09 |
| 16 | Giulio Ciccone | Lidl-Trek | 23:29 |
| 17 | Bruno Armirail | Decathlon AG2R La Mondiale | 26:49 |
| 18 | Louis Meintjes | Intermarché-Wanty | 28:51 |
| 19 | Santiago Buitrago | Bahrain Victorious | 29:46 |
| 20 | Marc Soler | UAE Team Emirates-XRG | 34:11 |
| 21 | Kevin Vermaerke | Team Picnic PostNL | 35:05 |
| 22 | Rudy Molard | Groupama-FDJ | 46:23 |
| 23 | Martin López | XDS Astana Team | 46:49 |
| 24 | Edward Dunbar | Team Jayco-AlUla | 47:50 |
| 25 | Jefferson Cepeda | Movistar Team | 53:46 |
| 26 | Ben Tulett | Team Visma | Lease a Bike | 55:26 |
| 27 | Felix Grossschartner | UAE Team Emirates-XRG | 57:57 |
| 28 | Mikel Landa | Soudal Quick-Step | 59:02 |
| 29 | Finlay Pickering | Bahrain Victorious | 1:01:43 |
| 30 | Marco Frigo | Israel-Premier Tech | 1:02:43 |
| 31 | Damien Howson | Q36.5 Pro Cycling Team | 1:06:00 |
| 32 | Brieuc Rolland | Groupama-FDJ | 1:14:17 |
| 33 | Sergio Samitier | Cofidis | 1:14:19 |
| 34 | Jay Vine | UAE Team Emirates-XRG | 1:14:47 |
| 35 | Johannes Staune-Mittet | Decathlon AG2R La Mondiale | 1:14:51 |
| 36 | Louis Vervaeke | Soudal Quick-Step | 1:16:48 |
| 37 | Julien Bernard | Lidl-Trek | 1:18:03 |
| 38 | Andrea Bagioli | Lidl-Trek | 1:21:05 |
| 39 | Clément Braz Afonso | Groupama-FDJ | 1:21:29 |
| 40 | Lorenzo Fortunato | XDS Astana Team | 1:21:44 |
| 41 | Wout Poels | XDS Astana Team | 1:22:58 |
| 42 | Fausto Masnada | XDS Astana Team | 1:29:31 |
| 43 | Callum Scotson | Decathlon AG2R La Mondiale | 1:31:40 |
| 44 | Bob Jungels | INEOS Grenadiers | 1:32:53 |
| 45 | Jan Hirt | Israel-Premier Tech | 1:34:12 |
| 46 | Antonio Tiberi | Bahrain Victorious | 1:35:38 |
| 47 | Ben Zwiehoff | Red Bull-BORA-hansgrohe | 1:36:11 |
| 48 | Carlos Verona | Lidl-Trek | 1:38:10 |
| 49 | Markel Beloki | EF Education-EasyPost | 1:38:33 |
| 50 | Juan Martinez | Team Picnic PostNL | 1:39:59 |
| 51 | Léo Bisiaux | Decathlon AG2R La Mondiale | 1:40:52 |
| 52 | Pierre Thierry | Arkea-B&B Hotels | 1:42:14 |
| 53 | Lars Craps | Lotto | 1:43:28 |
| 54 | Carlos Canal | Movistar Team | 1:46:38 |
| 55 | Victor Langellotti | INEOS Grenadiers | 1:47:33 |
| 56 | Gijs Leemreize | Team Picnic PostNL | 1:50:03 |
| 57 | Sander De Pestel | Decathlon AG2R La Mondiale | 1:50:37 |
| 58 | Magnus Sheffield | INEOS Grenadiers | 1:51:10 |
| 59 | Giovanni Aleotti | Red Bull-BORA-hansgrohe | 1:53:27 |
| 60 | Sean Quinn | EF Education-EasyPost | 1:54:46 |
| 61 | Brandon Rivera | INEOS Grenadiers | 1:57:00 |
| 62 | José Luis Faura | Burgos Burpellet BH | 1:57:04 |
| 63 | James Shaw | EF Education-EasyPost | 1:57:59 |
| 64 | Chris Hamilton | Team Picnic PostNL | 1:58:53 |
| 65 | Thomas Silva | Caja Rural-Seguros RGA | 1:59:18 |
| 66 | Max Schachmann | Soudal Quick-Step | 1:59:44 |
| 67 | Stefan Küng | Groupama-FDJ | 2:01:23 |
| 68 | Juan Ayuso | UAE Team Emirates-XRG | 2:01:52 |
| 69 | Finn Fisher-Black | Red Bull-BORA-hansgrohe | 2:02:56 |
| 70 | Michal Kwiatkowski | INEOS Grenadiers | 2:03:30 |
| 71 | Alex Molenaar | Caja Rural-Seguros RGA | 2:03:37 |
| 72 | David González | Q36.5 Pro Cycling Team | 2:04:38 |
| 73 | Hugo de la Calle | Burgos Burpellet BH | 2:07:45 |
| 74 | Michel Hessmann | Movistar Team | 2:07:48 |
| 75 | Nico Denz | Red Bull-BORA-hansgrohe | 2:08:26 |
| 76 | Bjoern Koerdt | Team Picnic PostNL | 2:09:58 |
| 77 | Mauri Vansevenant | Soudal Quick-Step | 2:10:21 |
| 78 | Wilco Kelderman | Team Visma | Lease a Bike | 2:10:33 |
| 79 | Jack Haig | Bahrain Victorious | 2:11:58 |
| 80 | Sergio Chumil | Burgos Burpellet BH | 2:13:44 |
| 81 | Nicola Conci | XDS Astana Team | 2:14:15 |
| 82 | Eduardo Sepulveda | Lotto | 2:14:22 |
| 83 | Jesus Herrada | Cofidis | 2:15:44 |
| 84 | David de la Cruz | Q36.5 Pro Cycling Team | 2:16:29 |
| 85 | Roman Ermakov | Bahrain Victorious | 2:19:21 |
| 86 | Joan Bou | Caja Rural-Seguros RGA | 2:21:53 |
| 87 | Nans Peters | Decathlon AG2R La Mondiale | 2:22:46 |
| 88 | Alec Segaert | Lotto | 2:24:09 |
| 89 | Jakub Otruba | Caja Rural-Seguros RGA | 2:25:10 |
| 90 | Orluis Aular | Movistar Team | 2:26:21 |
| 91 | Gal Glivar | Alpecin-Deceuninck | 2:26:52 |
| 92 | Nicolas Vinokurov | XDS Astana Team | 2:27:57 |
| 93 | David Gaudu | Groupama-FDJ | 2:28:33 |
| 94 | Jordan Labrosse | Decathlon AG2R La Mondiale | 2:29:14 |
| 95 | Mathijs Paasschens | Bahrain Victorious | 2:30:16 |
| 96 | Kelland O'Brien | Team Jayco-AlUla | 2:31:03 |
| 97 | Lukas Nerurkar | EF Education-EasyPost | 2:33:53 |
| 98 | Thibaud Gruel | Groupama-FDJ | 2:34:36 |
| 99 | Jardi Van Der Lee | EF Education-EasyPost | 2:34:41 |
| 100 | Emanuel Buchmann | Cofidis | 2:35:10 |
| 101 | Jonas Gregaard | Lotto | 2:36:10 |
| 102 | Ivo Oliveira | UAE Team Emirates-XRG | 2:37:49 |
| 103 | Louis Rouland | Arkea-B&B Hotels | 2:38:14 |
| 104 | Simone Petilli | Intermarché-Wanty | 2:38:15 |
| 105 | Iván García Cortina | Movistar Team | 2:38:19 |
| 106 | Mario Aparicio | Burgos Burpellet BH | 2:39:39 |
| 107 | Jonas Rickaert | Alpecin-Deceuninck | 2:41:07 |
| 108 | Patrick Gamper | Team Jayco-AlUla | 2:41:28 |
| 109 | Huub Artz | Intermarché-Wanty | 2:44:34 |
| 110 | Pier-André Côté | Israel-Premier Tech | 2:46:31 |
| 111 | Mads Pedersen | Lidl-Trek | 2:46:52 |
| 112 | Nicolò Buratti | Bahrain Victorious | 2:48:13 |
| 113 | Marcel Camprubí | Q36.5 Pro Cycling Team | 2:48:32 |
| 114 | Luca Van Boven | Intermarché-Wanty | 2:49:26 |
| 115 | Christopher Juul-Jensen | Team Jayco-AlUla | 2:49:39 |
| 116 | Victor Guernalec | Arkea-B&B Hotels | 2:52:01 |
| 117 | Remi Cavagna | Groupama-FDJ | 2:53:19 |
| 118 | Joel Nicolau | Caja Rural-Seguros RGA | 2:54:12 |
| 119 | Edward Planckaert | Alpecin-Deceuninck | 2:54:37 |
| 120 | Léandre Lozouet | Arkea-B&B Hotels | 2:54:40 |
| 121 | Kamiel Bonneu | Intermarché-Wanty | 2:55:22 |
| 122 | Nickolas Zukowsky | Q36.5 Pro Cycling Team | 2:56:28 |
| 123 | Dion Smith | Intermarché-Wanty | 2:59:00 |
| 124 | Madis Mihkels | EF Education-EasyPost | 3:00:02 |
| 125 | Matteo Sobrero | Red Bull-BORA-hansgrohe | 3:00:46 |
| 126 | Amanuel Ghebreigzabhier | Lidl-Trek | 3:01:33 |
| 127 | Jake Stewart | Israel-Premier Tech | 3:02:17 |
| 128 | Tobias Bayer | Alpecin-Deceuninck | 3:04:52 |
| 129 | Fabio Christen | Q36.5 Pro Cycling Team | 3:06:24 |
| 130 | Bryan Coquard | Cofidis | 3:06:31 |
| 131 | Liam Slock | Lotto | 3:08:39 |
| 132 | Alessandro Verre | Arkea-B&B Hotels | 3:08:50 |
| 133 | Dries De Pooter | Intermarché-Wanty | 3:09:13 |
| 134 | Ben Turner | INEOS Grenadiers | 3:09:50 |
| 135 | Dylan van Baarle | Team Visma | Lease a Bike | 3:09:51 |
| 136 | Filippo Ganna | INEOS Grenadiers | 3:12:12 |
| 137 | Mikkel Bjerg | UAE Team Emirates-XRG | 3:15:38 |
| 138 | Jasper De Buyst | Lotto | 3:16:11 |
| 139 | Tim van Dijke | Red Bull-BORA-hansgrohe | 3:20:24 |
| 140 | Xabier Azparren | Q36.5 Pro Cycling Team | 3:23:10 |
| 141 | Domen Novak | UAE Team Emirates-XRG | 3:24:50 |
| 142 | Timo Roosen | Team Picnic PostNL | 3:24:50 |
| 143 | Ethan Vernon | Israel-Premier Tech | 3:28:50 |
| 144 | Arne Marit | Intermarché-Wanty | 3:29:17 |
| 145 | Jenthe Biermans | Arkea-B&B Hotels | 3:32:04 |
| 146 | Anders Foldager | Team Jayco-AlUla | s.t. |
| 147 | Søren Kragh Andersen | Lidl-Trek | 3:32:32 |
| 148 | Nadav Raisberg | Israel-Premier Tech | 3:32:42 |
| 149 | Jasper Philipsen | Alpecin-Deceuninck | 3:33:15 |
| 150 | Daan Hoole | Lidl-Trek | 3:38:43 |
| 151 | Elia Viviani | Lotto | 3:38:50 |
| 152 | Patrick Eddy | Team Picnic PostNL | 3:49:35 |
| 153 | Stanislaw Aniolkowski | Cofidis | 3:49:46 |
| 154 | Oscar Riesebeek | Alpecin-Deceuninck | 4:01:58 |
Stage 16 map & profile:

Stage 16 map

Stage 16 profile
Stage 16 photos by Fotoreporter Sirotti:

Partway into the race, a group tries to get away.

Traffic on the overpass is stopped to watch the race go by.

Pro-Palestinian protests at the finish in Mos.