Classement de l’étape 4
| 1 | Mark Padun (Ukr) EF Education – EasyPost | 0:20:19 |
| 2 | Jesus Herrada (Spa) Cofidis | 0:00:05 |
| 3 | Alejandro Valverde (Spa) Movistar | 0:00:10 |
| 4 | Ion Izagirre Insausti (Spa) Cofidis | |
| 5 | Derek Gee (Can) Israel – Premier Tech | 0:00:11 |
| 6 | José Fernandes (Por) W52 / FC Porto | 0:00:16 |
| 7 | Nelson Oliveira (Por) Movistar | 0:00:17 |
| 8 | Urko Berrade Fernandez (Spa) Equipo Kern Pharma | 0:00:22 |
| 9 | Carlos Canal Blanco (Spa) Euskaltel – Euskadi | 0:00:26 |
| 10 | Michael Woods (Can) Israel – Premier Tech | 0:00:27 |
| 11 | Gonzalo Serrano Rodriguez (Spa) Movistar | |
| 12 | Jakob Fuglsang (Den) Israel – Premier Tech | 0:00:30 |
| 13 | Chad Haga (USA) Human Powered Health | 0:00:31 |
| 14 | Mads Würtz Schmidt (Den) Israel – Premier Tech | 0:00:36 |
| 15 | Ruben Fernandez (Spa) Cofidis | |
| 16 | Gorka Izagirre Insausti (Spa) Movistar | 0:00:38 |
| 17 | Roger Adria Oliveras (Spa) Equipo Kern Pharma | |
| 18 | Simon Geschke (Ger) Cofidis | 0:00:39 |
| 19 | Matthias Brändle (Aut) Israel – Premier Tech | 0:00:41 |
| 20 | Alessandro De Marchi (Ita) Israel – Premier Tech | 0:00:44 |
| 21 | Hugh Carthy (GBr) EF Education – EasyPost | 0:00:45 |
| 22 | Kyle Murphy (USA) Human Powered Health | 0:00:46 |
| 23 | Igor Arrieta Lizarraga (Spa) Equipo Kern Pharma | 0:00:48 |
| 24 | Tiago Antunes (Por) Efapel Cycling | 0:00:50 |
| 25 | Samuele Rivi (Ita) Eolo – Kometa | 0:00:51 |
| 26 | Alexander Molenaar (Ned) Burgos – BH | 0:00:52 |
| 27 | Luis Angel Mate Mardones (Spa) Euskaltel – Euskadi | 0:00:53 |
| 28 | Ben King (USA) Human Powered Health | 0:00:54 |
| 29 | Joaquim Silva (Por) Efapel Cycling | 0:00:57 |
| 30 | Daniel Freitas (Por) Radio Popular – Paredes – Boavista | |
| 31 | Diego Camargo Pineda (Col) EF Education – EasyPost | 0:00:58 |
| 32 | Erik Fetter (Hun) Eolo – Kometa | 0:00:59 |
| 33 | Stephen Bassett (USA) Human Powered Health | |
| 34 | Diego Lopez Fuentes (Spa) Equipo Kern Pharma | |
| 35 | Orluis Alberto Aular Sanabria (Ven) Caja Rural – Seguros RGA | 0:01:02 |
| 36 | Alejandro Marque Porto (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:01:04 |
| 37 | José Gonçalves (Por) W52 / FC Porto | |
| 38 | Davide Villella (Ita) Cofidis | 0:01:05 |
| 39 | Ibon Ruiz Sedano (Spa) Equipo Kern Pharma | 0:01:09 |
| 40 | Jose Herrada (Spa) Cofidis | 0:01:10 |
| 41 | Simone Bevilacqua (Ita) Eolo – Kometa | 0:01:12 |
| 42 | Filippo Zana (Ita) Bardiani CSF Faizane’ | 0:01:13 |
| 43 | Henrique Casimiro (Por) Efapel Cycling | |
| 44 | Delio Fernandez Cruz (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:01:14 |
| 45 | Odd Christian Eiking (Nor) EF Education – EasyPost | |
| 46 | Kristian Aasvold (Nor) Human Powered Health | 0:01:18 |
| 47 | Joan Bou Company (Spa) Euskaltel – Euskadi | |
| 48 | Ricardo Vilela (Por) W52 / FC Porto | 0:01:22 |
| 49 | Marco Frigo (Ita) Israel – Premier Tech | |
| 50 | Jorge Arcas (Spa) Movistar | 0:01:25 |
| 51 | Ivan Ramiro Sosa Cuervo (Col) Movistar | 0:01:27 |
| 52 | Jefferson Cepeda (Ecu) Caja Rural – Seguros RGA | 0:01:28 |
| 53 | Fernando Barceló Aragon (Spa) Caja Rural – Seguros RGA | 0:01:30 |
| 54 | Jhojan Garcia Susa (Col) Caja Rural – Seguros RGA | 0:01:33 |
| 55 | Eduardo Sepulveda (Arg) Drone Hopper – Androni Giocattoli | |
| 56 | Alvaro Trueba Diego (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:01:36 |
| 57 | Jon Barrenetxea Golzarri (Spa) Caja Rural – Seguros RGA | |
| 58 | Davide Gabburo (Ita) Bardiani CSF Faizane’ | 0:01:43 |
| 59 | Jetse Bol (Ned) Burgos – BH | 0:01:44 |
| 60 | Savva Novikov (Rus) Equipo Kern Pharma | |
| 61 | Adria Moreno Sala (Spa) Burgos – BH | 0:01:45 |
| 62 | Unai Iribar Jauregi (Spa) Euskaltel – Euskadi | |
| 63 | Jordi Lopez Caravaca (Spa) Equipo Kern Pharma | 0:01:47 |
| 64 | Alessandro Fancellu (Ita) Eolo – Kometa | |
| 65 | Rafael Silva (Por) Efapel Cycling | 0:01:48 |
| 66 | Davide Bais (Ita) Eolo – Kometa | 0:01:49 |
| 67 | Victor Langellotti (Mon) Burgos – BH | |
| 68 | Giovanni Lonardi (Ita) Eolo – Kometa | 0:01:52 |
| 69 | Alex Tolio (Ita) Bardiani CSF Faizane’ | |
| 70 | João Benta (Por) Efapel Cycling | 0:01:54 |
| 71 | Simone Ravanelli (Ita) Drone Hopper – Androni Giocattoli | 0:02:00 |
| 72 | Angel Fuentes Paniego (Spa) Burgos – BH | |
| 73 | José Rojas (Spa) Movistar | 0:02:02 |
| 74 | Jefferson Cepeda (Ecu) Drone Hopper – Androni Giocattoli | 0:02:05 |
| 75 | Brandon Alejandro Rojas Vega (Col) Drone Hopper – Androni Giocattoli | 0:02:06 |
| 76 | Guillermo Garcia Janeiro (Spa) Radio Popular – Paredes – Boavista | 0:02:07 |
| 77 | Ibai Azurmendi Sagastibeltza (Spa) Euskaltel – Euskadi | 0:02:11 |
| 78 | Omar El Gouzi (Ita) Bardiani CSF Faizane’ | |
| 79 | Aritz Bagües Kalparsoro (Spa) Caja Rural – Seguros RGA | |
| 80 | Luís Fernandes (Por) Radio Popular – Paredes – Boavista | 0:02:12 |
| 81 | Samuel Blanco Prol (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:02:15 |
| 82 | Tiago Machado (Por) Radio Popular – Paredes – Boavista | 0:02:16 |
| 83 | Oscar Cabedo Carda (Spa) Burgos – BH | |
| 84 | Amaro Antunes (Por) W52 / FC Porto | 0:02:17 |
| 85 | Edoardo Zardini (Ita) Drone Hopper – Androni Giocattoli | |
| 86 | Francisco Guerreiro (Por) Efapel Cycling | 0:02:18 |
| 87 | Keegan Swirbul (USA) Human Powered Health | 0:02:20 |
| 88 | César Martingil (Por) Radio Popular – Paredes – Boavista | |
| 89 | Filippo Fiorelli (Ita) Bardiani CSF Faizane’ | 0:02:26 |
| 90 | Asier Etxeberria Zafra (Spa) Euskaltel – Euskadi | 0:02:27 |
| 91 | Jóni Brandão (Por) W52 / FC Porto | |
| 92 | Alessio Nieri (Ita) Bardiani CSF Faizane’ | 0:02:29 |
| 93 | Carlos Salgueiro (Por) Atum General/Tavira/AP Maria Nova Hotel | |
| 94 | Guilherme Mota (Por) W52 / FC Porto | |
| 95 | Isaac Canton Serrano (Spa) Manuela Fundacion | 0:02:31 |
| 96 | Giovanni Visconti (Ita) Bardiani CSF Faizane’ | 0:02:37 |
| 97 | Calum Johnston (GBr) Caja Rural – Seguros RGA | 0:02:38 |
| 98 | Alberto Gallego Ruiz (Spa) Radio Popular – Paredes – Boavista | 0:02:40 |
| 99 | Rui Vinhas (Por) W52 / FC Porto | 0:02:41 |
| 100 | Joan Marti Bennassar Rossello (Spa) Manuela Fundacion | 0:02:46 |
| 101 | Daniel Jimenez Martinez (Spa) Manuela Fundacion | 0:02:50 |
| 102 | Antonio Angulo Sampedro (Spa) Euskaltel – Euskadi | 0:02:59 |
| 103 | Daniel Viegas (Por) Eolo – Kometa | 0:03:03 |
| 104 | Juan Antonio Lopez – Cozar Jaimez (Spa) Burgos – BH | 0:03:12 |
| 105 | Lachlan Morton (Aus) EF Education – EasyPost | 0:03:13 |
| 106 | Ricardo Alejandro Zurita Garcia (Spa) Drone Hopper – Androni Giocattoli | 0:03:24 |
| 107 | Válter Pereira (Por) Atum General/Tavira/AP Maria Nova Hotel | 0:03:53 |
| 108 | Franklin Chacon Colmenares (Ven) Manuela Fundacion | 0:03:57 |
| 109 | Santiago Mesa Pietralunga (Col) Manuela Fundacion | 0:04:47 |
Classement général final
| 1 | Alejandro Valverde (Spa) Movistar | 12:35:55 |
| 2 | Michael Woods (Can) Israel – Premier Tech | 0:00:07 |
| 3 | Mark Padun (Ukr) EF Education – EasyPost | 0:01:49 |
| 4 | Ruben Fernandez (Spa) Cofidis | 0:01:55 |
| 5 | Ivan Ramiro Sosa Cuervo (Col) Movistar | 0:01:57 |
| 6 | Ion Izagirre Insausti (Spa) Cofidis | 0:02:11 |
| 7 | Igor Arrieta Lizarraga (Spa) Equipo Kern Pharma | 0:02:35 |
| 8 | Urko Berrade Fernandez (Spa) Equipo Kern Pharma | 0:02:54 |
| 9 | Jesus Herrada (Spa) Cofidis | 0:03:01 |
| 10 | Jakob Fuglsang (Den) Israel – Premier Tech | 0:03:04 |
| 11 | Filippo Zana (Ita) Bardiani CSF Faizane’ | 0:03:26 |
| 12 | José Fernandes (Por) W52 / FC Porto | 0:03:28 |
| 13 | Jefferson Cepeda (Ecu) Caja Rural – Seguros RGA | 0:03:41 |
| 14 | Tiago Antunes (Por) Efapel Cycling | 0:04:09 |
| 15 | Davide Villella (Ita) Cofidis | 0:04:24 |
| 16 | Delio Fernandez Cruz (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:04:30 |
| 17 | Gorka Izagirre Insausti (Spa) Movistar | 0:04:32 |
| 18 | Alexander Molenaar (Ned) Burgos – BH | 0:05:21 |
| 19 | Fernando Barceló Aragon (Spa) Caja Rural – Seguros RGA | 0:05:59 |
| 20 | Chad Haga (USA) Human Powered Health | 0:07:00 |
| 21 | Eduardo Sepulveda (Arg) Drone Hopper – Androni Giocattoli | 0:07:25 |
| 22 | Roger Adria Oliveras (Spa) Equipo Kern Pharma | 0:07:27 |
| 23 | Derek Gee (Can) Israel – Premier Tech | 0:07:32 |
| 24 | Jefferson Cepeda (Ecu) Drone Hopper – Androni Giocattoli | 0:07:51 |
| 25 | Alejandro Marque Porto (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:08:16 |
| 26 | Luis Angel Mate Mardones (Spa) Euskaltel – Euskadi | 0:08:27 |
| 27 | Simon Geschke (Ger) Cofidis | 0:08:28 |
| 28 | Victor Langellotti (Mon) Burgos – BH | 0:08:50 |
| 29 | Jose Herrada (Spa) Cofidis | 0:09:12 |
| 30 | Tiago Machado (Por) Radio Popular – Paredes – Boavista | 0:09:41 |
| 31 | Edoardo Zardini (Ita) Drone Hopper – Androni Giocattoli | 0:11:02 |
| 32 | Samuele Rivi (Ita) Eolo – Kometa | 0:11:58 |
| 33 | Ibon Ruiz Sedano (Spa) Equipo Kern Pharma | 0:12:24 |
| 34 | Jhojan Garcia Susa (Col) Caja Rural – Seguros RGA | 0:12:25 |
| 35 | Orluis Alberto Aular Sanabria (Ven) Caja Rural – Seguros RGA | 0:12:33 |
| 36 | Nelson Oliveira (Por) Movistar | 0:12:48 |
| 37 | Unai Iribar Jauregi (Spa) Euskaltel – Euskadi | 0:12:55 |
| 38 | Simone Ravanelli (Ita) Drone Hopper – Androni Giocattoli | 0:13:48 |
| 39 | Gonzalo Serrano Rodriguez (Spa) Movistar | 0:14:06 |
| 40 | Joaquim Silva (Por) Efapel Cycling | 0:14:20 |
| 41 | Carlos Canal Blanco (Spa) Euskaltel – Euskadi | 0:15:00 |
| 42 | Odd Christian Eiking (Nor) EF Education – EasyPost | 0:15:04 |
| 43 | Ricardo Vilela (Por) W52 / FC Porto | 0:15:32 |
| 44 | Davide Bais (Ita) Eolo – Kometa | 0:15:39 |
| 45 | Henrique Casimiro (Por) Efapel Cycling | 0:15:45 |
| 46 | Jetse Bol (Ned) Burgos – BH | 0:16:19 |
| 47 | Alberto Gallego Ruiz (Spa) Radio Popular – Paredes – Boavista | 0:17:01 |
| 48 | Rui Vinhas (Por) W52 / FC Porto | 0:17:13 |
| 49 | Davide Gabburo (Ita) Bardiani CSF Faizane’ | 0:17:25 |
| 50 | Alvaro Trueba Diego (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:17:31 |
| 51 | José Rojas (Spa) Movistar | 0:17:44 |
| 52 | Ibai Azurmendi Sagastibeltza (Spa) Euskaltel – Euskadi | 0:17:57 |
| 53 | Aritz Bagües Kalparsoro (Spa) Caja Rural – Seguros RGA | 0:18:08 |
| 54 | Jordi Lopez Caravaca (Spa) Equipo Kern Pharma | 0:19:51 |
| 55 | Adria Moreno Sala (Spa) Burgos – BH | 0:20:08 |
| 56 | Jon Barrenetxea Golzarri (Spa) Caja Rural – Seguros RGA | 0:20:09 |
| 57 | Erik Fetter (Hun) Eolo – Kometa | 0:20:18 |
| 58 | Alessandro De Marchi (Ita) Israel – Premier Tech | 0:20:20 |
| 59 | Hugh Carthy (GBr) EF Education – EasyPost | 0:20:24 |
| 60 | Joan Bou Company (Spa) Euskaltel – Euskadi | 0:20:31 |
| 61 | Daniel Freitas (Por) Radio Popular – Paredes – Boavista | 0:20:32 |
| 62 | Isaac Canton Serrano (Spa) Manuela Fundacion | 0:20:45 |
| 63 | Oscar Cabedo Carda (Spa) Burgos – BH | 0:20:50 |
| 64 | José Gonçalves (Por) W52 / FC Porto | 0:21:00 |
| 65 | Savva Novikov (Rus) Equipo Kern Pharma | 0:21:13 |
| 66 | Diego Lopez Fuentes (Spa) Equipo Kern Pharma | 0:21:16 |
| 67 | Alessandro Fancellu (Ita) Eolo – Kometa | 0:21:32 |
| 68 | Luís Fernandes (Por) Radio Popular – Paredes – Boavista | 0:21:40 |
| 69 | Amaro Antunes (Por) W52 / FC Porto | 0:22:16 |
| 70 | Mads Würtz Schmidt (Den) Israel – Premier Tech | 0:23:01 |
| 71 | Filippo Fiorelli (Ita) Bardiani CSF Faizane’ | |
| 72 | Rafael Silva (Por) Efapel Cycling | 0:23:06 |
| 73 | Daniel Jimenez Martinez (Spa) Manuela Fundacion | 0:23:10 |
| 74 | Kyle Murphy (USA) Human Powered Health | 0:23:41 |
| 75 | Kristian Aasvold (Nor) Human Powered Health | |
| 76 | Stephen Bassett (USA) Human Powered Health | 0:23:51 |
| 77 | Ben King (USA) Human Powered Health | 0:23:58 |
| 78 | Omar El Gouzi (Ita) Bardiani CSF Faizane’ | 0:24:52 |
| 79 | Calum Johnston (GBr) Caja Rural – Seguros RGA | 0:24:58 |
| 80 | Diego Camargo Pineda (Col) EF Education – EasyPost | 0:25:02 |
| 81 | Samuel Blanco Prol (Spa) Atum General/Tavira/AP Maria Nova Hotel | 0:25:06 |
| 82 | Marco Frigo (Ita) Israel – Premier Tech | 0:25:18 |
| 83 | Jorge Arcas (Spa) Movistar | 0:25:21 |
| 84 | Giovanni Lonardi (Ita) Eolo – Kometa | 0:25:46 |
| 85 | Asier Etxeberria Zafra (Spa) Euskaltel – Euskadi | 0:26:26 |
| 86 | Matthias Brändle (Aut) Israel – Premier Tech | 0:27:14 |
| 87 | Angel Fuentes Paniego (Spa) Burgos – BH | 0:27:26 |
| 88 | João Benta (Por) Efapel Cycling | 0:27:38 |
| 89 | Jóni Brandão (Por) W52 / FC Porto | 0:28:05 |
| 90 | Alex Tolio (Ita) Bardiani CSF Faizane’ | 0:28:23 |
| 91 | Simone Bevilacqua (Ita) Eolo – Kometa | 0:28:28 |
| 92 | Keegan Swirbul (USA) Human Powered Health | 0:28:40 |
| 93 | Guilherme Mota (Por) W52 / FC Porto | 0:29:19 |
| 94 | Válter Pereira (Por) Atum General/Tavira/AP Maria Nova Hotel | 0:29:37 |
| 95 | Brandon Alejandro Rojas Vega (Col) Drone Hopper – Androni Giocattoli | 0:30:04 |
| 96 | Juan Antonio Lopez – Cozar Jaimez (Spa) Burgos – BH | 0:30:05 |
| 97 | Giovanni Visconti (Ita) Bardiani CSF Faizane’ | 0:30:08 |
| 98 | Antonio Angulo Sampedro (Spa) Euskaltel – Euskadi | 0:30:18 |
| 99 | Franklin Chacon Colmenares (Ven) Manuela Fundacion | 0:30:24 |
| 100 | Ricardo Alejandro Zurita Garcia (Spa) Drone Hopper – Androni Giocattoli | 0:30:51 |
| 101 | Alessio Nieri (Ita) Bardiani CSF Faizane’ | 0:31:08 |
| 102 | Daniel Viegas (Por) Eolo – Kometa | 0:32:11 |
| 103 | César Martingil (Por) Radio Popular – Paredes – Boavista | 0:33:33 |
| 104 | Carlos Salgueiro (Por) Atum General/Tavira/AP Maria Nova Hotel | 0:33:39 |
| 105 | Francisco Guerreiro (Por) Efapel Cycling | 0:35:50 |
| 106 | Joan Marti Bennassar Rossello (Spa) Manuela Fundacion | 0:39:18 |
| 107 | Guillermo Garcia Janeiro (Spa) Radio Popular – Paredes – Boavista | 0:42:40 |
| 108 | Santiago Mesa Pietralunga (Col) Manuela Fundacion | 0:55:30 |
| 109 | Lachlan Morton (Aus) EF Education – EasyPost | 1:10:56 |
Commenter