L'avant-dernière étape comporte cinq ascensions classées dans les 100 derniers kilomètres. Après 50 kilomètres de course, un groupe de 16 coureurs se détache du peloton, obtenant une avance de 11 minutes et demie avant que Ineos Grenadiers ne commence à rouler dans le peloton. À l'échappée, Storer accumule le maximum de points sur les trois premières montées pour décrocher le classement de la montagne. Dans la descente de l'Alto de Mougás, Ryan Gibbons (UAE Team Emirates) attaque dans l'échappée, prenant plus d'une minute d'avance sur le groupe de chasse. Dans le peloton, Adam Yates (Ineos Grenadiers) attaque à deux reprises. Seuls Roglič, Mas, Haig et Gino Mäder (Team Bahrain Victorious) parviennent à le suivre, l'avance du groupe s'envolant à plus de quatre minutes sur le groupe Miguel Ángel López et Egan Bernal, tous deux piégés. En colère et énervé, López finit par abandonner au milieu de l'étape, malgré les tentatives de ses coéquipiers et du directeur sportif pour le remotiver[1]. Devant, le groupe Roglič revient petit à petit sur les échappées lors des deux dernières montées. Avec moins d'une minute de retard sur Gibbons, Yates et Mas partent à l'attaque dans la montée finale, rattrapant et lâchant Gibbons, mais Roglič et Haig parviennent à faire la jonction à chaque fois. Dans les deux derniers kilomètres, alors que les quatre coureurs sont quasiment à l'arrêt, Clément Champoussin (AG2R Citroën Team), qui était échappé en début d'étape, en profite pour revenir de l'arrière et attaquer les leaders qui continuent à se regarder. Il conserve quelques secondes d'avance sur la ligne pour remporter sa première étape sur un grand tour. Roglič termine deuxième et conserve le maillot rouge tandis que Haig passe à la troisième place et Yates se hisse à la quatrième place. Nouveau cinquième du général, Gino Mäder récupère le maillot blanc de meilleur jeune de Bernal[2].