171 coureurs ont pris le départ de l'une des étapes les attendues et redoutées de La Vuelta 2017. Après 35km de bataille, huit coureurs sont parvenus à sortir du peloton : Edward Theuns (Trek-Segafredo), Matteo Trentin (Quick Step), Nelson Oliveira (Movistar), Tom Van Asbroeck (Cannoondale-Drapac), Sander Armée (Lotto-Soudal), Anthony Perez, Stéphane Rossetto (Cofidis) et Lluis Mas (Caja Rural-Seguros RGA). Ils avaient déjà couvert 51km après une heure de course. Emmené par les Astana, le peloton n'était qu'à 2 minutes au moment d'attaquer la première ascension.
Sander Armée s'est montré le plus fort parmi les hommes de tête dans l'alto de Hazallanas. Adam Yates (Orica-Scott), Romain Bardet (AG2R-La Mondiale) et Steven Kruijswijk (LottoNL-Jumbo) ont profité des pentes les plus sévères pour passer à l'offensive à 60km de l'arrivée. Ils ont franchi le sommet avec un retard de 1'15” sur Armée, finalement rejoint au pied de l'alto del Purche, à 27,5km de l'arrivée.
Adam Yates a rapidement distancé ses compagnons tandis qu'Alberto Contador (Trek-Segafredo) et Miguel Angel Lopez (Astana) sortaient du groupe des favoris. Yates a maintenu une avance de 1'15” sur ses poursuivants pendant l'essentiel de l'alto Hoya de la Mora mais il n'a pas pu résister lorsque Lopez a attaqué à 5km de l'arrivée, bouché le trou et filé vers la victoire en solitaire.
Vincenzo Nibali (Bahrain-Merida) a attaqué à 13,5km de l'arrivée pour tenter de renverser la situation au classement général. Mais le Team Sky a contrôlé l'ascension jusqu'à une accélération d'Ilnur Zakarin (Katusha-Alpecin) dans les deux derniers kilomètres. Deuxième derrière Lopez, le Russe a repris 9” à Wilco Kelderman et 11” à Chris Froome (Team Sky). Toujours leader, Froome a finalement porté à 1'01” son avance sur Vincenzo Nibali au général à la veille du deuxième jour de repos.