| 1 | Paul SeixasDecathlon CMA CGM Team | 15:51:26 |
| 2 | Juan Martinez HuertasTeam Picnic PostNL | +4:18 |
| 3 | Hector Alvarez MartinezLidl-Trek Future Racing | +4:23 |
| 4 | Jarno WidarLotto Intermarché | +5:23 |
| 5 | Duarte DominguesCredibom / la Alumínios / Marcos Car | +14:26 |
| 6 | Gonçalo TavaresEfapel Cycling | +17:20 |
| 7 | Rafael BarbasTavfer-Ovos Matinados-Mortágua | +24:39 |
| 8 | Paul MagnierSoudal Quick-Step | +25:12 |
| 9 | Jens VerbruggheNSN Development Team | +29:47 |
| 10 | Pablo Lospitao GonzalezCaja Rural-Seguros RGA | +31:23 |
| 11 | Cláudio LealAviludo - Louletano - Loulé | +34:49 |
| 12 | Noah HobbsEF Education - EasyPost | +35:49 |
| 13 | Andrey AndréGI Group Holding - Simoldes - UDO | +35:58 |
| 14 | Pedro PintoGI Group Holding - Simoldes - UDO | +36:13 |
| 15 | Rúben RodriguesFeira DOS Sofás - Boavista | +36:25 |
| 16 | André RibeiroGI Group Holding - Simoldes - UDO | +37:34 |
| 17 | Luca GiaimiUAE Team Emirates GEN-Z | +39:04 |
| 18 | Guilherme MestreTeam Tavira | +39:10 |
| 19 | João MartinsCredibom / la Alumínios / Marcos Car | +46:14 |
| 20 | Rodrigo AlvesTeam Tavira | +48:32 |