Cette deuxième étape alpestre comprend cinq ascensions répertoriées dont trois de première catégorie. Après 75 premiers kilomètres vallonnés dont le col des Fleuries non répertorié, le col de la Forclaz de Montmin (1re catégorie, 7,2 km à 7,3 % ) est gravi. Au km 113, le col de la Croix Fry (1re catégorie, 11,3 km à 7 %) est suivi immédiatement par le col des Aravis (3e catégorie, 4,4 km à 5,8 %) franchi après 133,3 km. La montée finale se compose de deux cols séparés par un replat d'environ un kilomètre traversant Saint-Gervais-les-Bains. Les coureurs grimpent d'abord les pentes raides (à 10,9 % et des passages à 17 %) des 2,7 km de la côte des Amerands puis, après Saint-Gervais, poursuivent leur ascension jusqu’à l’arrivée au sommet au hameau d'altitude du Bettex (1re catégorie, 7 km à 7,7 %)[1].
En ce début d'étape, plusieurs attaques afin de constituer une échappée restent vaines. Après plusieurs tentatives, le Français Julian Alaphilippe (Soudal Quick-Step) s'échappe en compagnie du Kazakh Alexey Lutsenko (Astana) à 139 km de l'arrivée. ils prennent rapidement trente secondes sur le peloton. Ils sont pris en chasse par un groupe de 23 coureurs, alors que le peloton laisse filer. Au km 51, une chute provoquée par un spectateur se produit à l'avant du peloton mettant de nombreux coureurs au sol. Le groupe des poursuivants talonne le duo de tête à trente secondes, le peloton pointe à deux minutes. Au pied du col de la Forclaz de Montmin, km 82,8 (1re catégorie, 7,2 km à 5,8 %), ils sont 35 coureurs avec un retard de trente secondes sur les échappés, le peloton est à huit minutes. Au sommet, Lutsenko précède Alaphilippe mais, dans la descente du col, une partie du groupe de chasse reprend les deux hommes. Le peloton maillot jaune accuse alors un retard de huit minutes et trente secondes sur les fuyards. À 73 km de l'arrivée, l'Autrichien Marco Haller (Bora Hansgrohe) part seul en tête et aborde le col de la Croix Fry, km 124,5 (1re catégorie, 11,3 km à 7 %), mais le Portugais Rui Costa (Intermarché Circus Wanty) le rejoint dans l'ascension puis le lâche avant d'être repris à son tour par le groupe des poursuivants, à 1,5 km du sommet. C'est l'Italien Giulio Ciccone (Lidl Trek) qui bascule en tête devant Wout van Aert, alors que le groupe ne compte plus que 21 unités. Dans la montée du col des Aravis, km 133,3 (3e catégorie, 4,4 km à 5,8 %), l'Espagnol Marc Soler attaque et se retrouve seul à l'avant de la course. Il passe en tête au sommet. Dès le début de la descente, il est repris par un trio de poursuivants : Wout van Aert (Jumbo Visma), Wout Poels (Bahrain Victorious) et Krists Neilands (Israel Premier Tech). Le peloton maillot jaune pointe à plus de six minutes. Le quatuor de tête perd Neilands qui chute dans la descente. À 30 km de l'arrivée, van Aert, Poels et Soler possèdent cinquante secondes d'avance sur leurs premiers poursuivants encore au nombre de douze.
Au pied de la côte des Amerands, km 170,6 (2e catégorie, 2,7 km à 10,9 %), le trio de tête, avec Soler légèrement décroché, compte un avantage d'une minute et vingt secondes sur le groupe de chasse et sept minutes et trente secondes sur le groupe maillot jaune. Dès le début de la côte, Wout Poels attaque et augmente constamment son avance sur Wout van Aert dans l'ascension finale et gagne l'étape avec plus de deux minutes d'avance sur le Belge et trois minutes sur le Français Mathieu Burgaudeau (TotalEnergies), revenu du groupe de chasse. Dans le groupe maillot jaune, Tadej Pogačar et Jonas Vingegaard s'observent. Pogačar tente une courte attaque à moins d'un kilomètre mais Vingegaard le suit facilement. Ils arrivent ensemble à plus de six minutes du vainqueur[2].