Dès le début de l'étape, la bagarre commence à l'avant du peloton, pour tenter de créer une échappée. Moins d'un quart d'heure après le départ, une chute collective se produit, des dizaines de coureurs tombent et la course est neutralisée[2]. L'Espagnol Antonio Pedrero et le Sud-AfricainLouis Meintjes sont contraints à l'abandon. Vingt-cinq minutes plus tard, un nouveau départ est donné par le directeur de la course Christian Prudhomme. Après plusieurs attaques, aucun coureur ne réussit à creuser l'écart. En queue de peloton, plusieurs coureurs pris dans la chute souffrent, dont Esteban Chaves (EF Education-EasyPost) qui abandonne à son tour[3]. À moins de 135 km de l'arrivée, le Français Julian Alaphilippe attaque, il est accompagné du Letton Krists Neilands et du Néerlandais Lars van den Berg. Le trio est ensuite rejoint par le Kazakh Alexey Lutsenko et le Colombien Daniel Martínez. Au col de Saxel, km 18,7 (3e catégorie, 4,2 km à 4,6 %), Martínez passe en tête devant Alaphilippe. Dans la descente du col, le Français Romain Bardet chute ; blessé, il est contraint à l'abandon.
Au pied du Col de Cou, km 35,3 (1re catégorie, 7 km à 7,4 %), ils sont vingt coureurs à s'être portés à l'avant et comptent une trentaine de secondes d'avance sur le peloton. C'est l'Italien Giulio Ciccone qui bascule en tête du sommet devant l'Américain Neilson Powless, maillot à pois, et Alaphilippe. Au début de la montée du col du Feu, km 52,7 (1re catégorie, 5,8 km à 7,8 %), trois hommes se portent en tête : les deux Espagnols Alex Aranburu et Gorka Izagirre et le Norvégien Tobias Johannessen. Un peu plus loin, ils sont remplacés par un nouveau trio composé de Thibaut Pinot, Ciccone et le Canadien Michael Woods. Au sommet, Ciccone devance Woods et l'Espagnol Mikel Landa. Sous l'impulsion de l'équipe Jumbo-Visma, le groupe maillot jaune se rapproche à près de vingt secondes des échappés. À l'approche du sprint intermédiaire situé au col de Jambaz (km 65,5), ils sont dix coureurs à être à l'avant.
Au début de la montée du col de la Ramaz, km 101,6 (1re catégorie, 13,9 km à 7,1 %), Ciccone et Woods accélèrent. Après avoir été repris par le groupe maillot jaune, Pinot et Guillaume Martin qui étaient à la poursuite du duo de tête, sont distancés. À 57 km de l'arrivée, il n'y a plus d'échappés, la Jumbo-Visma qui roule à un rythme soutenu a repris tous les coureurs. Ils sont plusieurs à être distancés dont le Colombien Egan Bernal et l'Australien Jack Haig, le peloton compte désormais vingt et un éléments. Après le col de la Ramaz, le groupe maillot jaune plonge vers la descente emmené par les formations Jumbo-Visma et UAE Team Emirates, avec en point de mire le col de Joux Plane et ses bonifications, km 139,8 (hors catégorie, 11,6 km à 8,5 %).
Au début de l'ascension du col de Joux Plane, le groupe maillot jaune compte une quinzaine de coureurs dont quatre Jumbo-Visma et quatre UAE Emirates. C'est le Polonais Rafał Majka qui prend la tête du groupe devant Kuss, Vingegaard, Pogačar et Adam Yates. À 9 km du sommet, ils ne sont plus que sept coureurs à l'avant de la course. Majka se relève pour laisser place à la Jumbo-Visma. C'est Sepp Kuss qui mène le plus souvent le train devant son leader Vingegaard jusqu'à 4,7 km du sommet lorsque Adam Yates accélère suivi par son leader Tadej Pogačar et Vingegaard. Les deux derniers éléments du groupe, Kuss et Carlos Rodríguez, lâchent prise. Un kilomètre plus loin, Pogačar attaque et prend quelques secondes d'avance sur Vingegaard mais le maillot jaune danois revient sur le Slovène à 1,6 km du sommet. Pogačar tente encore une attaque fulgurante à 500 mètres du sommet, mais il est gêné et stoppé dans son effort par des motos et un public venu en nombre le long de la route[4],[5]. Vingegaard passe le col en tête devant Pogačar puis le duo temporise dans la descente permettant le retour de Carlos Rodríguez qui profite de la rivalité des maillots jaune et blanc pour prendre quelques secondes d'avance et filer vers la victoire à Morzine devant Pogačar et Vingegaard[6].