| # | Rider | Team | Time | Gap |
|---|---|---|---|---|
| 1 | Juan Ayuso | UAE Team Emirates | 00:19:11 | |
| 2 | Antonio Tiberi | Bahrain Victorious | + 07 | + 07 |
| 3 | Mads Pedersen | Lidl-Trek | + 11 | + 11 |
| 4 | Marc Hirschi | UAE Team Emirates | + 14 | + 14 |
| 5 | Mathieu van der Poel | Alpecin-Deceuninck | + 19 | + 19 |
| 6 | Felix Großschartner | UAE Team Emirates | + 20 | + 20 |
| 7 | Lorenzo Milesi | Movistar Team | + 20 | + 20 |
| 8 | Quinn Simmons | Lidl-Trek | + 26 | + 26 |
| 9 | Harry Sweeny | EF Education-EasyPost | + 26 | + 26 |
| 10 | Alex Kirsch | Lidl-Trek | + 31 | + 31 |
| 11 | Finn Fisher-black | UAE Team Emirates | + 32 | + 32 |
| 12 | Fred Wright | Bahrain Victorious | + 35 | + 35 |
| 13 | David Gaudu | Groupama-FDJ | + 36 | + 36 |
| 14 | Vincent van Hemelen | Team Flanders-Baloise | + 40 | + 40 |
| 15 | Davide Piganzoli | Team Polti Kometa | + 43 | + 43 |
| 16 | William Barta | Movistar Team | + 50 | + 50 |
| 17 | Michael Storer | Tudor Pro Cycling Team | + 53 | + 53 |
| 18 | Mauri Vansevenant | Soudal Quick-Step | + 54 | + 54 |
| 19 | Logan Currie | Lotto Dstny | + 54 | + 54 |
| 20 | Mats Wenzel | Luxembourg | + 54 | + 54 |
| 21 | Johannes Staune-mittet | Team Visma | Lease a Bike | + 57 | + 57 |
| 22 | Harm Vanhoucke | Lotto Dstny | + 58 | + 58 |
| 23 | Wilco Kelderman | Team Visma | Lease a Bike | + 59 | + 59 |
| 24 | Nicolas Prodhomme | Decathlon AG2R La Mondiale Team | + 59 | + 59 |
| 25 | Nils Politt | UAE Team Emirates | + 01:01 | + 01:01 |
| 26 | Mirco Maestri | Team Polti Kometa | + 01:03 | + 01:03 |
| 27 | Bob Jungels | Luxembourg | + 01:05 | + 01:05 |
| 28 | Jordan Jegat | TotalEnergies | + 01:05 | + 01:05 |
| 29 | Victor Vercouillie | Team Flanders-Baloise | + 01:07 | + 01:07 |
| 30 | Damien Howson | Q36.5 Pro Cycling Team | + 01:09 | + 01:09 |
| 31 | Pelayo Sanchez | Movistar Team | + 01:10 | + 01:10 |
| 32 | Bastien Tronchon | Decathlon AG2R La Mondiale Team | + 01:10 | + 01:10 |
| 33 | Xabier Azparren | Q36.5 Pro Cycling Team | + 01:11 | + 01:11 |
| 34 | Andreas Kron | Lotto Dstny | + 01:16 | + 01:16 |
| 35 | Jonas Gregaard | Lotto Dstny | + 01:17 | + 01:17 |
| 36 | Oscar Chamberlain | Decathlon AG2R La Mondiale Team | + 01:19 | + 01:19 |
| 37 | Kevin Geniets | Groupama-FDJ | + 01:19 | + 01:19 |
| 38 | Tobias Ludvigsson | Q36.5 Pro Cycling Team | + 01:19 | + 01:19 |
| 39 | Fausto Masnada | Soudal Quick-Step | + 01:21 | + 01:21 |
| 40 | Jonas Rutsch | EF Education-EasyPost | + 01:22 | + 01:22 |
| 41 | Tijmen Graat | Team Visma | Lease a Bike | + 01:23 | + 01:23 |
| 42 | Andrea Vendrame | Decathlon AG2R La Mondiale Team | + 01:25 | + 01:25 |
| 43 | Bart Lemmen | Team Visma | Lease a Bike | + 01:25 | + 01:25 |
| 44 | Gianni Moscon | Soudal Quick-Step | + 01:26 | + 01:26 |
| 45 | Rui Costa | EF Education-EasyPost | + 01:27 | + 01:27 |
| 46 | Ivo Oliveira | UAE Team Emirates | + 01:29 | + 01:29 |
| 47 | Idar Andersen | Uno-X Mobility | + 01:29 | + 01:29 |
| 48 | Brieuc Rolland | Groupama-FDJ | + 01:30 | + 01:30 |
| 49 | Damiano Caruso | Bahrain Victorious | + 01:30 | + 01:30 |
| 50 | Jon Barrenetxea | Movistar Team | + 01:31 | + 01:31 |
| 51 | Jordy Bouts | TdT-Unibet | + 01:35 | + 01:35 |
| 52 | Magnus Cort | Uno-X Mobility | + 01:35 | + 01:35 |
| 53 | Mark Donovan | Q36.5 Pro Cycling Team | + 01:35 | + 01:35 |
| 54 | Andreas Stokbro Nielsen | TdT-Unibet | + 01:37 | + 01:37 |
| 55 | Valentin Madouas | Groupama-FDJ | + 01:39 | + 01:39 |
| 56 | Julien Bernard | Lidl-Trek | + 01:42 | + 01:42 |
| 57 | Henrik Pedersen | Uno-X Mobility | + 01:42 | + 01:42 |
| 58 | Hartthijs de Vries | TdT-Unibet | + 01:42 | + 01:42 |
| 59 | Mathijs Paasschens | Lotto Dstny | + 01:43 | + 01:43 |
| 60 | Elias Maris | Team Flanders-Baloise | + 01:43 | + 01:43 |
| 61 | Christian Eiking Odd | Uno-X Mobility | + 01:44 | + 01:44 |
| 62 | Kamiel Bonneu | Team Flanders-Baloise | + 01:46 | + 01:46 |
| 63 | Fredrik Hagen Carl | Q36.5 Pro Cycling Team | + 01:46 | + 01:46 |
| 64 | Rudy Molard | Groupama-FDJ | + 01:48 | + 01:48 |
| 65 | Alan Jousseaume | TotalEnergies | + 01:48 | + 01:48 |
| 66 | Alexis Vuillermoz | TotalEnergies | + 01:49 | + 01:49 |
| 67 | Christophe Laporte | Team Visma | Lease a Bike | + 01:49 | + 01:49 |
| 68 | Mathieu Kockelmann | Luxembourg | + 01:50 | + 01:50 |
| 69 | Mattia Bais | Team Polti Kometa | + 01:57 | + 01:57 |
| 70 | Adrien Maire | TdT-Unibet | + 01:59 | + 01:59 |
| 71 | Pepijn Reinderink | Soudal Quick-Step | + 02:03 | + 02:03 |
| 72 | Johannes Adamietz | Lotto Dstny | + 02:05 | + 02:05 |
| 73 | Roman Holzer | Tudor Pro Cycling Team | + 02:10 | + 02:10 |
| 74 | Louis Vervaeke | Soudal Quick-Step | + 02:11 | + 02:11 |
| 75 | Toon Clynhens | Team Flanders-Baloise | + 02:13 | + 02:13 |
| 76 | Johannes Kulset | Uno-X Mobility | + 02:14 | + 02:14 |
| 77 | Vlad van Mechelen | Bahrain Victorious | + 02:21 | + 02:21 |
| 78 | Robin Froidevaux | Tudor Pro Cycling Team | + 02:23 | + 02:23 |
| 79 | Esteban Chaves | EF Education-EasyPost | + 02:24 | + 02:24 |
| 80 | Amanuel Ghebreigzabhier | Lidl-Trek | + 02:30 | + 02:30 |
| 81 | Jente Michels | Alpecin-Deceuninck | + 02:31 | + 02:31 |
| 82 | Anthony Turgis | TotalEnergies | + 02:32 | + 02:32 |
| 83 | Jaakko Hänninen | Decathlon AG2R La Mondiale Team | + 02:34 | + 02:34 |
| 84 | Davide Bais | Team Polti Kometa | + 02:34 | + 02:34 |
| 85 | Tosh van der Sande | Team Visma | Lease a Bike | + 02:35 | + 02:35 |
| 86 | Giovanni Lonardi | Team Polti Kometa | + 02:37 | + 02:37 |
| 87 | Laurence Pithie | Groupama-FDJ | + 02:37 | + 02:37 |
| 88 | Alexandre Kess | Luxembourg | + 02:52 | + 02:52 |
| 89 | Robert Stannard | Bahrain Victorious | + 02:55 | + 02:55 |
| 90 | Lukasz Wisniowski | Bahrain Victorious | + 02:58 | + 02:58 |
| 91 | Noe Ury | Luxembourg | + 02:59 | + 02:59 |
| 92 | Javier Serrano | Team Polti Kometa | + 02:59 | + 02:59 |
| 93 | Arno Wallenborn | Luxembourg | + 03:02 | + 03:02 |
| 94 | Szymon Sajnok | Q36.5 Pro Cycling Team | + 03:05 | + 03:05 |
| 95 | Jack Rootkin-gray | EF Education-EasyPost | + 03:17 | + 03:17 |
| 96 | Silvan Dillier | Alpecin-Deceuninck | + 03:40 | + 03:40 |
| 97 | Archie Ryan | EF Education-EasyPost | + 04:02 | + 04:02 |