Christopher Froome, qui a perdu 22 secondes dans l'ascension finale vers Peyragudes, perd le maillot jaune au profit de Fabio Aru. Les autres classements ne subissent pas de modification : Marcel Kittel mène le classement par points, Warren Barguil le classement de la montagne et Simon Yates le classement du meilleur jeune.
Les principales difficultés de cette étape sont concentrées dans la deuxième moitié de son parcours. À partir de Fronsac, le parcours effectue une boucle, comportant le col des Ares, col de deuxième catégorie et le col de Menté, col de première catégorie. La descente de ce col ramène la course dans la vallée de la Garonne, par les communes de Saint-Béat et d'Esténos et clôt la boucle entamée à Fronsac. Le parcours se dirige ensuite vers Mauléon-Barousse, en repassant dans les Hautes-Pyrénées, et passe par la plus grosse difficulté du jour : le Port de Balès, difficulté hors-catégorie. Le parcours traverse ensuite Bourg-d'Oueil, petite station de ski haute-garonnaise.
Le parcours se rapproche enfin de l'arrivée avec le col de Peyresourde (première catégorie) et arrive à l'altiport de Peyragudes, dans les Hautes-Pyrénées, sommet classé en deuxième catégorie[1].
Le peloton implose dans la montée du Port de Balès, franchi en tête par Steve Cummings. Dans la montée du col de Peyresourde, Nairo Quintana est lâché, Cummings s'épuise et il est rattrapé par un groupe de onze coureurs, contrôlé par Mikel Nieve et Mikel Landa, coéquipiers du maillot jaune Chris Froome. Mais dans les trois derniers hectomètres de la montée inédite vers l'altiport de Peyragudes, Fabio Aru lance une attaque, suivie par Romain Bardet et Rigoberto Urán. Froome n'arrive pas à suivre[2]. Bardet réussit à dépasser Aru et il gagne l'étape devant Urán : c'est sa troisième victoire sur le Tour de France, après 2015 et 2016. Froome perd le maillot jaune au profit d'Aru.