La deuxième étape de ce grand départ du Pays basque espagnol présente, comme la première étape, un profil accidenté. Le parcours s'oriente globalement vers le nord-est, reliant la capitale administrative basque Vitoria-Gasteiz, éloignée dans les terres, à la capitale touristique basque Saint-Sébastien, située sur la côte cantabrique. Longue de 208,9 kilomètres, il s'agit de l'étape la plus longue de cette 110e édition du Tour de France.
Le tracé débute par la traversée d'un long plateau sur près de cinquante kilomètres à cinq cents mètres d'altitude. Le sprint intermédiaire prend place à Legutio (km 40,6). S'ensuit quatre courtes ascensions : le col d'Udana (3e catégorie, km 81, 4,5 km à 5,1 %), la côte d'Aztiria (4e catégorie, km 87,5, 2,7 km à 5,3 %), la côte d'Alkiza (3e catégorie, km 141, 4,2 km à 5,7 %) et la côte de Gurutze (4e catégorie, km 174, 2,6 km à 4,7 %).
Le final de l'étape emprunte des routes connues de la Classique de Saint-Sébastien, avec l'ultime col au programme, l'Alto de Jaizkibel, (2e catégorie, km 192,5, 8,1 km à 5,3 %), dont le sommet se situe à 16 500 m de l'arrivée en bord de mer, à Saint-Sébastien[1].
Fort et légitimé par son maillot à pois, Neilson Powless passe en tête au sommet des deux premières ascensions, le col d'Udana (3e catégorie, km 81, 4,5 km à 5,1 %) et la côte d'Aztiria (4e catégorie, km 87,5, 2,7 km à 5,3 %) ; l'écart avec le peloton en-haut de cette dernière est de trois minutes et vingt-cinq secondes. A Tolosa, l'échappée compte deux minutes et quarante-deux secondes d'avance sur le peloton. Dans la côte d'Alkiza (3e catégorie, km 141, 4,2 km à 5,7 %), Rémi Cavagna est repris par le peloton ; au sommet, Neilson Powless passe en tête devant Boasson Hagen, avec une minute et cinquante-et-une secondes d'avance sur le peloton. L'Américain passe de nouveau en tête au sommet de la côte de Gurutze (4e catégorie, km 174, 2,6 km à 4,7 %), avec trente-neuf secondes d'avance sur le Norvégien ; le peloton compte un débours d'une minute et cinquante-cinq secondes.
A 10 kilomètres de l'arrivée, Pello Bilbao tente de s'échapper, il est repris à 5 400 mètres de l'arrivée, moment où le champion d'AllemagneEmanuel Buchmann (Bora-Hansgrohe) décide d'attaquer, il est également repris, près de huit cents mètres plus tard. A trois kilomètres de l'arrivée, Tom Pidcock attaque à son tour, mais il est immédiatement suivi par Wout van Aert. A 2 500 mètres du but final, Mattias Skjelmose Jensen tente également, en vain. Sous la flamme rouge, le Français Victor Lafay (Cofidis) place une attaque tranchante, il résiste au retour du groupe maillot jaune, emmené par Wout van Aert, et gagne avec quelques mètres d'avance sur le Belge et Tadej Pogačar, mettant désormais fin à quinze années de disette de l'équipe Cofidis sur le Tour de France, première victoire d'étape donc depuis le FrançaisSylvain Chavanel à Montluçon en 2008[3]. Le groupe de sept coureurs dans lequel se situe Ben O'Connor coupe la ligne avec un retard de cinquante-huit secondes. Le groupe de treize coureurs, avec Alaphilippe et Pinot, compte finalement un débours de deux minutes et vingt-cinq secondes.