La 13e étape commence à Saint-Girons, dans le Couserans, et se passe entièrement en Ariège.
La première partie du parcours est plutôt plate. Elle traverse les communes d'Eycheil, de Lacourt et d'Oust, en remontant le Salat. Le sprint intermédiaire se déroule à Seix. Cette étape continue ensuite dans la campagne ariégeoise, en traversant Ustou et quelques écarts. La première difficulté est le col de Latrape, de catégorie 1 : 417 mètres à monter sur 5,5 km.
L'étape traverse ensuite Aulus-les-Bains, et le deuxième col se profile : le col d'Agnes, lui aussi de catégorie 1 (818 mètres à monter sur 10 km).
Voeckler s'échappe dès le départ accompagné par Barguil, ils font une dizaine de kilomètres mais le peloton ne leur laisse pas plus de 10 à 20 secondes et ils sont repris. Puis un deuxième groupe composé de Chavanel, Gilbert et De Marchi se détache. De Marchi sème ses compagnons et franchit seul le col de Latrape. À l'arrière, Fuglsang peine et il finira par abandonner.
Contador et Landa s'échappent et grimpent ensemble le col d'Agnes. Contador passe au sommet, suivi par Landa puis par Barguil qui s'est échappé à nouveau pour conforter son maillot à pois. Il est accompagné par Quintana, dans la descente le Français va essayer de rejoindre les deux Espagnols. Les quatre coureurs se rassemblent au Mur de Péguère, franchi en tête par Barguil. Ils descendent et vont se disputer la victoire d'étape. Barguil remporte le sprint à Foix en doublant Contador.
C'est la quatrième victoire française sur le Tour 2017, et la première un 14 juillet depuis la victoire de Moncoutié en 2005. Fabio Aru conserve son maillot jaune.