| 1 | Paul SeixasDecathlon CMA CGM Team | 20:07:35 |
| 2 | Florian LipowitzRed Bull - Bora - Hansgrohe | +2:30 |
| 3 | Tobias Halland JohannessenUNO-X Mobility | +2:33 |
| 4 | Ion Izaguirre InsaustiCofidis | +3:50 |
| 5 | Clément ChampoussinXDS Astana Team | +4:43 |
| 6 | Pello Bilbao Lopez De ArmentiaBahrain Victorious | +5:03 |
| 7 | Javier Romo OliverMovistar Team | +5:05 |
| 8 | Igor Arrieta LizarragaUAE Team Emirates XRG | +5:25 |
| 9 | Alex BaudinEF Education - EasyPost | +5:41 |
| 10 | Kévin VauquelinIneos Grenadiers | +7:33 |
| 11 | Guillaume Martin GuyonnetGroupama-FDJ United | +11:34 |
| 12 | Cian UijtdebroeksMovistar Team | +13:15 |
| 13 | Markel Beloki FernandezEF Education - EasyPost | +18:39 |
| 14 | Mattias Skjelmose Jennow JensenLidl-Trek | +19:24 |
| 15 | Harold Alfonso Tejada CanacueXDS Astana Team | +20:59 |
| 16 | Primož RogličRed Bull - Bora - Hansgrohe | +22:54 |
| 17 | Matthew RiccitelloDecathlon CMA CGM Team | +23:59 |
| 18 | Ibon Ruiz SedanoEquipo Kern Pharma | +24:18 |
| 19 | Fernando Barcelo AragonCaja Rural-Seguros RGA | +26:46 |
| 20 | Emiel VerstryngeAlpecin-Premier Tech | +30:07 |