Après plusieurs tentatives avortées, six hommes se portent en tête après un peu moins de 80 kilomètres de course: Richard Carapaz, Ben Healy, Mattéo Vercher, Oier Lazkano, Paul Lapeira et Oscar Onley. Quelques kilomètres plus loin, Guillaume Martin, Romain Grégoire, Bruno Armirail et Julien Bernard les rejoignent. Ces dix hommes de tête restent ensemble jusqu'à la montée du Puy Mary où le groupe éclate.
Ben Healy est le dernier échappé à être repris par le groupe maillot jaune à 32 kilomètres de l'arrivée et 1 000 m du sommet du Puy Mary. 400 mètres plus loin, le maillot jaune Tadej Pogačar place une attaque et franchit le sommet avec 5 secondes d'avance sur Jonas Vingegaard, 14 sur Primož Roglič et 28 sur Remco Evenepoel. Dans la descente, Pogačar augmente son avantage alors que Roglič rejoint Vingegaard. Ensuite, Evenepoel et un petit groupe reviennent sur Roglič et Vingegaard au bas de cette descente. Pogačar aborde le col de Pertus avec un avantage de 35 secondes sur sept poursuivants. Vingegaard contre-attaque, dans un premier temps accompagné de Roglič, puis revient seul sur Pogačar en vue du sommet. Evenepoel qui a repris Roglič pointe au sommet à 45 secondes du duo de tête.
Dans la dernière ascension, le col de Fond de Cère, les positions restent inchangées : le duo Pogačar-Vingegaard passe au sommet avec 30 secondes d'avance sur le duo Evenepoel-Roglič. Dans la descente vers l'arrivée, Roglič chute sans gravité et passe la ligne trente secondes derrière le Belge, avant d'être crédité du même temps qu'Evenepoel[2]. À l'arrivée, Jonas Vingegaard l'emporte au sprint, une demi roue devant Tadej Pogačar. Remco Evenepoel prend la troisième place à 25 secondes du vainqueur[3].