| # | Rider | Team | Time | Gap |
|---|---|---|---|---|
| 1 | Paul Lapeira | Decathlon AG2R La Mondiale Team | 03:29:58 | |
| 2 | Mathias Vacek | Lidl-Trek | + 02 | + 02 |
| 3 | Victor Langellotti | INEOS Grenadiers | + 02 | + 02 |
| 4 | Antonio Tiberi | Bahrain Victorious | + 02 | + 02 |
| 5 | Jan Christen | UAE Team Emirates-XRG | + 02 | + 02 |
| 6 | Rudy Molard | Groupama-FDJ | + 04 | + 04 |
| 7 | Brandon Mcnulty | UAE Team Emirates-XRG | + 04 | + 04 |
| 8 | Finn Fisher-black | Red Bull-BORA-hansgrohe | + 04 | + 04 |
| 9 | Quinten Hermans | Alpecin-Deceuninck | + 04 | + 04 |
| 10 | Rafal Majka | UAE Team Emirates-XRG | + 04 | + 04 |
| 11 | Mikkel Honore | EF Education-EasyPost | + 08 | + 08 |
| 12 | Alberto Bettiol | XDS Astana Team | + 08 | + 08 |
| 13 | Marco Frigo | Israel-Premier Tech | + 09 | + 09 |
| 14 | Matteo Sobrero | Red Bull-BORA-hansgrohe | + 09 | + 09 |
| 15 | Pello Bilbao | Bahrain Victorious | + 09 | + 09 |
| 16 | Filippo Zana | Team Jayco-AlUla | + 09 | + 09 |
| 17 | Alessandro Verre | ARKEA-B&B HOTELS | + 13 | + 13 |
| 18 | Thibaud Gruel | Groupama-FDJ | + 13 | + 13 |
| 19 | Maxim van Gils | Red Bull-BORA-hansgrohe | + 13 | + 13 |
| 20 | Jack Haig | Bahrain Victorious | + 13 | + 13 |
| 21 | Matthew Riccitello | Israel-Premier Tech | + 13 | + 13 |
| 22 | Diego Ulissi | XDS Astana Team | + 17 | + 17 |
| 23 | Davide Formolo | Movistar Team | + 17 | + 17 |
| 24 | Andrea Bagioli | Lidl-Trek | + 22 | + 22 |
| 25 | Lars Craps | Lotto | + 22 | + 22 |
| 26 | Yannis Voisard | Tudor Pro Cycling Team | + 22 | + 22 |
| 27 | Sam Oomen | Lidl-Trek | + 22 | + 22 |
| 28 | Piotr Pekala | Poland | + 22 | + 22 |
| 29 | Chris Hamilton | Team Picnic PostNL | + 22 | + 22 |
| 30 | Magnus Sheffield | INEOS Grenadiers | + 22 | + 22 |
| 31 | Johannes Staune-mittet | Decathlon AG2R La Mondiale Team | + 22 | + 22 |
| 32 | Embret Svestad-bårdseng | ARKEA-B&B HOTELS | + 30 | + 30 |
| 33 | Andrea Raccagni Noviero | Soudal Quick-Step | + 37 | + 37 |
| 34 | Michal Kwiatkowski | INEOS Grenadiers | + 38 | + 38 |
| 35 | Attila Valter | Team Visma | Lease a Bike | + 41 | + 41 |
| 36 | Ethan Hayter | Soudal Quick-Step | + 41 | + 41 |
| 37 | Alexander Kamp | Intermarché-Wanty | + 45 | + 45 |
| 38 | Ide Schelling | XDS Astana Team | + 49 | + 49 |
| 39 | Darren Rafferty | EF Education-EasyPost | + 49 | + 49 |
| 40 | Koen Bouwman | Team Jayco-AlUla | + 49 | + 49 |
| 41 | Stefan Küng | Groupama-FDJ | + 58 | + 58 |
| 42 | Dorian Godon | Decathlon AG2R La Mondiale Team | + 58 | + 58 |
| 43 | Huub Artz | Intermarché-Wanty | + 58 | + 58 |
| 44 | Gonzalo Serrano | Movistar Team | + 01:03 | + 01:03 |
| 45 | George Bennett | Israel-Premier Tech | + 01:03 | + 01:03 |
| 46 | Arjen Livyns | Lotto | + 01:03 | + 01:03 |
| 47 | Hannes Wilksch | Tudor Pro Cycling Team | + 01:07 | + 01:07 |
| 48 | Martin Svrcek | Soudal Quick-Step | + 01:11 | + 01:11 |
| 49 | Enzo Paleni | Groupama-FDJ | + 01:17 | + 01:17 |
| 50 | Matthew Brennan | Team Visma | Lease a Bike | + 01:17 | + 01:17 |
| 51 | Menno Huising | Team Visma | Lease a Bike | + 01:17 | + 01:17 |
| 52 | Colby Simmons | EF Education-EasyPost | + 01:20 | + 01:20 |
| 53 | Mateusz Gajdulewicz | Poland | + 01:23 | + 01:23 |
| 54 | Reuben Thompson | Lotto | + 01:23 | + 01:23 |
| 55 | Anthony Perez | Cofidis | + 01:23 | + 01:23 |
| 56 | Edoardo Zambanini | Bahrain Victorious | + 01:26 | + 01:26 |
| 57 | Francesco Busatto | Intermarché-Wanty | + 01:26 | + 01:26 |
| 58 | Jan Maas | Cofidis | + 01:31 | + 01:31 |
| 59 | Natnael Tesfazion | Movistar Team | + 01:33 | + 01:33 |
| 60 | Pier-andré Côté | Israel-Premier Tech | + 01:33 | + 01:33 |
| 61 | Paul Ourselin | Cofidis | + 01:33 | + 01:33 |
| 62 | Nicolas Vinokurov | XDS Astana Team | + 01:45 | + 01:45 |
| 63 | Michael Leonard | INEOS Grenadiers | + 01:47 | + 01:47 |
| 64 | Chris Froome | Israel-Premier Tech | + 01:47 | + 01:47 |
| 65 | Lorenzo Milesi | Movistar Team | + 01:53 | + 01:53 |
| 66 | Fran Miholjevic | Bahrain Victorious | + 01:55 | + 01:55 |
| 67 | Clément Davy | Groupama-FDJ | + 01:58 | + 01:58 |
| 68 | Pierre Thierry | ARKEA-B&B HOTELS | + 01:58 | + 01:58 |
| 69 | Roman Ermakov | Bahrain Victorious | + 01:58 | + 01:58 |
| 70 | Kelland O'brien | Team Jayco-AlUla | + 02:07 | + 02:07 |
| 71 | Christopher Juul-jensen | Team Jayco-AlUla | + 02:07 | + 02:07 |
| 72 | Marcin Budzinski | Poland | + 02:15 | + 02:15 |
| 73 | Gijs Leemreize | Team Picnic PostNL | + 02:18 | + 02:18 |
| 74 | Max Poole | Team Picnic PostNL | + 02:18 | + 02:18 |
| 75 | Pepijn Reinderink | Soudal Quick-Step | + 02:18 | + 02:18 |
| 76 | Daniel Martinez | Red Bull-BORA-hansgrohe | + 02:18 | + 02:18 |
| 77 | Jasha Sütterlin | Team Jayco-AlUla | + 02:18 | + 02:18 |
| 78 | Jonas Koch | Red Bull-BORA-hansgrohe | + 02:18 | + 02:18 |
| 79 | Stan Dewulf | Decathlon AG2R La Mondiale Team | + 03:08 | + 03:08 |
| 80 | Jacopo Mosca | Lidl-Trek | + 03:15 | + 03:15 |
| 81 | Filippo Baroncini | UAE Team Emirates-XRG | + 03:15 | + 03:15 |
| 82 | Nolann Mahoudo | Cofidis | + 03:38 | + 03:38 |
| 83 | Jasper de Buyst | Lotto | + 03:58 | + 03:58 |
| 84 | Steven Kruijswijk | Team Visma | Lease a Bike | + 04:01 | + 04:01 |
| 85 | Marijn van den Berg | EF Education-EasyPost | + 04:01 | + 04:01 |
| 86 | Juan Martinez | Team Picnic PostNL | + 04:01 | + 04:01 |
| 87 | Paul Magnier | Soudal Quick-Step | + 04:19 | + 04:19 |
| 88 | Remi Cavagna | Groupama-FDJ | + 04:19 | + 04:19 |
| 89 | Gijs van Hoecke | Intermarché-Wanty | + 04:49 | + 04:49 |
| 90 | Aimé de Gendt | Cofidis | + 04:49 | + 04:49 |
| 91 | Samuel Gaze | Alpecin-Deceuninck | + 05:02 | + 05:02 |
| 92 | Oscar Chamberlain | Decathlon AG2R La Mondiale Team | + 05:02 | + 05:02 |
| 93 | Stake Laengen Vegard | UAE Team Emirates-XRG | + 05:02 | + 05:02 |
| 94 | Filip Maciejuk | Red Bull-BORA-hansgrohe | + 05:02 | + 05:02 |
| 95 | Tim van Dijke | Red Bull-BORA-hansgrohe | + 05:07 | + 05:07 |
| 96 | Pawel Bernas | Poland | + 05:30 | + 05:30 |
| 97 | Max Walker | EF Education-EasyPost | + 05:30 | + 05:30 |
| 98 | Lucas Hamilton | INEOS Grenadiers | + 06:52 | + 06:52 |
| 99 | Miles Scotson | ARKEA-B&B HOTELS | + 06:52 | + 06:52 |
| 100 | Johan Jacobs | Groupama-FDJ | + 06:52 | + 06:52 |
| 101 | Timo Roosen | Team Picnic PostNL | + 06:52 | + 06:52 |
| 102 | Alessandro de Marchi | Team Jayco-AlUla | + 07:01 | + 07:01 |
| 103 | Elia Viviani | Lotto | + 07:01 | + 07:01 |
| 104 | Giosue Epis | ARKEA-B&B HOTELS | + 07:01 | + 07:01 |
| 105 | Florian Sénéchal | ARKEA-B&B HOTELS | + 07:01 | + 07:01 |
| 106 | Max Kanter | XDS Astana Team | + 07:01 | + 07:01 |
| 107 | Torn Teutenberg Tim | Lidl-Trek | + 07:01 | + 07:01 |
| 108 | Ethan Vernon | Israel-Premier Tech | + 07:59 | + 07:59 |
| 109 | Nadav Raisberg | Israel-Premier Tech | + 07:59 | + 07:59 |
| 110 | Stan van Tricht | Alpecin-Deceuninck | + 07:59 | + 07:59 |
| 111 | Alessandro Romele | XDS Astana Team | + 07:59 | + 07:59 |
| 112 | Michele Gazzoli | XDS Astana Team | + 07:59 | + 07:59 |
| 113 | Cédric Beullens | Lotto | + 07:59 | + 07:59 |
| 114 | Florian Vermeersch | UAE Team Emirates-XRG | + 07:59 | + 07:59 |
| 115 | Tom Paquot | Intermarché-Wanty | + 07:59 | + 07:59 |
| 116 | Patrick Gamper | Team Jayco-AlUla | + 07:59 | + 07:59 |
| 117 | Madis Mihkels | EF Education-EasyPost | + 07:59 | + 07:59 |
| 118 | Michal Pomorski | Poland | + 07:59 | + 07:59 |
| 119 | Owain Doull | EF Education-EasyPost | + 07:59 | + 07:59 |
| 120 | Tomasz Budzinski | Poland | + 07:59 | + 07:59 |
| 121 | Lionel Taminiaux | Lotto | + 07:59 | + 07:59 |
| 122 | Ayco Bastiaens | Soudal Quick-Step | + 07:59 | + 07:59 |
| 123 | Daniel Mclay | Team Visma | Lease a Bike | + 07:59 | + 07:59 |
| 124 | Arvid de Kleijn | Tudor Pro Cycling Team | + 07:59 | + 07:59 |
| 125 | Jensen Plowright | Alpecin-Deceuninck | + 08:06 | + 08:06 |
| 126 | Stanislaw Aniolkowski | Cofidis | + 08:06 | + 08:06 |
| 127 | Piet Allegaert | Cofidis | + 08:06 | + 08:06 |
| 128 | Fabio van den Bossche | Alpecin-Deceuninck | + 08:10 | + 08:10 |
| 129 | Sebastian Kolze Changizi | Tudor Pro Cycling Team | + 08:10 | + 08:10 |
| 130 | Casper van Uden | Team Picnic PostNL | + 08:29 | + 08:29 |
| 131 | Olav Kooij | Team Visma | Lease a Bike | + 08:29 | + 08:29 |
| 132 | Bauke Mollema | Lidl-Trek | + 08:47 | + 08:47 |
| 133 | Casper Pedersen | Soudal Quick-Step | + 09:03 | + 09:03 |
| 134 | Timo Kielich | Alpecin-Deceuninck | + 10:14 | + 10:14 |
| 135 | Ben Turner | INEOS Grenadiers | + 10:14 | + 10:14 |
| 136 | Vlad van Mechelen | Bahrain Victorious | + 10:15 | + 10:15 |
| 137 | Davide Cimolai | Movistar Team | + 10:22 | + 10:22 |
| 138 | Fernando Gaviria | Movistar Team | + 10:22 | + 10:22 |
| 139 | Julius Johansen | UAE Team Emirates-XRG | + 10:23 | + 10:23 |
| 140 | Maikel Zijlaard | Tudor Pro Cycling Team | + 10:25 | + 10:25 |
| 141 | Arthur Kluckers | Tudor Pro Cycling Team | + 10:31 | + 10:31 |
| 142 | Niklas Behrens | Team Visma | Lease a Bike | + 10:31 | + 10:31 |
| 143 | Bob Jungels | INEOS Grenadiers | + 10:40 | + 10:40 |
| 144 | Gerben Thijssen | Intermarché-Wanty | + 10:54 | + 10:54 |
| 145 | Patrick Eddy | Team Picnic PostNL | + 11:01 | + 11:01 |
| 146 | Sam Bennett | Decathlon AG2R La Mondiale Team | + 11:10 | + 11:10 |
| 147 | Manlio Moro | Movistar Team | + 11:36 | + 11:36 |
| 148 | Kamiel Bonneu | Intermarché-Wanty | + 13:28 | + 13:28 |
| 149 | Patryk Stosz | Poland | + 15:37 | + 15:37 |
| 150 | Donavan Grondin | ARKEA-B&B HOTELS | + 21:13 | + 21:13 |
| 151 | Lars Boven | Alpecin-Deceuninck | + 21:34 | + 21:34 |