Le départ est donné à Huércal-Overa, dans l'est de l'Andalousie. La course entre ensuite dans la région de Murcie et longe la côte méditerranéenne jusqu'à San Javier, où est jugée l'arrivée après 153 kilomètres. Deux côtes référencées sont franchies, l'Alto del Garrobillo et à l'Alto del Cedacero, toutes deux en troisième catégorie[1].
Trois coureurs s'échappent en début d'étape : Jorge Cubero (Burgos-BH), Richie Porte (BMC) et le leader du classement de la montagne Luis Ángel Maté (Cofidis). Le peloton les laisse prendre quatre minutes d'avance avant que les équipes Groupama-FDJ et Quick Step-Floors ne réduisent l'écart. Luis Ángel Maté accroît son avance au classement de la montagne en passant en tête à l'Alto del Garrobillo et à l'Alto del Cedacero. Au sprint intermédiaire à Carthagène, à 50 km de l'arrivée, l'avance du trio de tête n'est plus que de 2 min 22 s. Porte et Maté sont rattrapés alors qu'il reste 33 km, et Cubero cinq kilomètres plus loin[2].
À environ 25 km de l'arrivée, à chute durant la traversée de La Unión divise le peloton. Un premier groupe, réduit à une cinquantaine de coureurs, voit les équipes Quick Step-Floors, Bora-Hansgrohe EF-Drapac s'activer pour empêcher le retour des coureurs retardés. Dans le final, l'équipe Quick Step-Floors prépare le sprint d'Elia Viviani mais est désorganisée au passage d'un rond-point. Nacer Bouhanni (Cofidis) lance son sprint de loin. Il résiste aux retours de ses concurrents, notamment Danny van Poppel (LottoNL-Jumbo) et Elia Viviani, et s'impose. C'est sa troisième victoire d'étape sur le Tour d'Espagne. La précédente, quatre ans auparavant jour pour jour, était également son dernier succès sur un grand tour. Cette victoire intervient dans une saison marquée par une remise en cause du statut de Bouhanni au sein de l'équipe Cofidis et par des tensions entre le coureur et les dirigeants de l'équipe[2],[3].
La tête du classement général ne subit pas de changement. Rudy Molard (Groupama-FDJ) garde le maillot rouge, avec 41 secondes d'avance sur Michał Kwiatkowski (Sky) et 48 sur Emanuel Buchmann (Bora-Hansgrohe). Wilco Kelderman (Sunweb), retardé par une crevaison, passe de la sixième à la dix-septième place du classement général en arrivant avec 1 min 44 s de retard, tout comme Thibaut Pinot (Groupama-FDJ), désormais dix-huitième[2].