La première étape se termine par un circuit local à accomplir trois fois. Ce circuit comprend la côte du Rocher de l'Aigle (1 km à 7,3 %) dont le dernier passage se situe à 11 kilomètres de l'arrivée à Chambon-sur-Lac. La deuxième étape est vallonnée et l'arrivée se termine en faux plat montant. La troisième étape présente une seconde partie plate excepté la côte de Pinay située à 20 kilomètres de l’arrivée. La quatrième étape est disputée sous la forme d'un long contre-la-montre de 31,1 km. La cinquième étape, plate dans sa première partie, compte deux ascensions dans le final dont la côte de Thésy (3,6 km à 8,8 %, sommet à 14 km de l'arrivée). La sixième étape est la première étape de montagne sur cette édition du Dauphiné avec, dans les 40 derniers kilomètres, le col des Aravis (7,8 km à 5,7 %), la côte de Notre-Dame-de-Bellecombe (3,2 km à 5,7 %) puis une arrivée au sommet de Crest-Voland (2,3 km à 6,6 %). La septième étape franchit trois cols mythiques des Alpes, le col de la Madeleine à mi-parcours, le col du Mollard et l'arrivée au col de la Croix-de-Fer (13,1 km à 6,2 %). La dernière étape voit six cols s'enchaîner dont le col du Granier et le col de Porte et l'arrivée au sommet de la courte mais très pentue montée (1,8 km à 14,2 %) vers La Bastille sur les hauteurs de Grenoble.
Après plusieurs attaques, cinq coureurs réussissent à prendre la bonne échappée : les Belges Rune Herregodts (Intermarché Circus Wanty), Brent Van Moer (Lotto Dstny) et Fabio Van den Bossche (Alpecin Deceuninck) et les Français Donavan Grondin (Arkéa Samsic) et Dorian Godon (AG2R Citroën). Ultime rescapé de cette échappée, Herregodts est rattrapé par l'avant du peloton à 25 mètres de la ligne l'arrivée où le Français Christophe Laporte (Jumbo Visma) s'impose.
Le Belge Victor Campenaerts (Lotto Dstny) et le Français Kenny Elissonde (Tref-Segafredo), les deux derniers rescapés de l’échappée, sont repris dans la côte des Guêtes à dix kilomètres du terme. Moment choisi par l’Autrichien Tobias Bayer (Alpecin Deceuninck) pour attaquer et s'isoler en tête pendant quelques kilomètres mais sans succès. Idem pour l’Australien Harrison Sweeny (Lotto Dstny) par la suite mais aussi en vain. La victoire se joue au sprint. Julian Alaphilippe s'impose avec une longueur d'avance sur l’Équatorien Richard Carapaz (EF Education).
Le peloton se présente groupé à l'arrivée. Deux chutes se produisent dans les 1 700 derniers mètres. Comme lors de l'étape initiale, Christophe Laporte gagne le sprint alors que Sam Bennett et Dylan Groenewegen, arrivés deuxième et troisième, sont déclassés pour avoir gêné d'autres coureurs en changeant de trajectoire.
Rémi Cavagna prend rapidement le meilleur temps de ce chrono avant que Mikkel Bjerg ne le batte pour 27 secondes. Le Danois endosse le maillot jaune alors que son compatriote Jonas Vingegaard prend la 2e place de l'étape et du classement général.
L'étape se joue dans la côte de Thésy à une quinzaine de kilomètres de l'arrivée. L'échappée de six coureurs qui avait compté jusqu'à 4 minutes d'avance sur le peloton est rapidement reprise. Richard Carapaz attaque suivi par Jonas Vingegaard. Quelques hectomètres plus loin, Vingegaard lâche Carapaz, creuse facilement un écart et passe seul en tête au sommet de la côte. Le Danois poursuit son effort, gagne en solitaire à Salins-les-Bains avec une trentaine de secondes d'avance et prend les rênes du classement général avec plus d'une minute d'avance sur son dauphin Julian Alaphilippe qui règle le sprint d'un peloton de 18 hommes et prend la 2e place de l'étape devant Tobias Halland Johannessen.
Le groupe de 14 échappés explose dans la montée du col des Aravis. Un trio composé de Mathieu Burgaudeau (TotalEnergies), Georg Zimmermann (Intermarché Circus Wanty) et Jonathan Castroviejo (Ineos Grenadiers) passe en tête au sommet (à 18 km de l'arrivée) avec 1 min. 30 sec. d'avance sur le peloton. Dans la montée finale vers Crest-Voland, Zimmermann attaque à 1 900 m du sommet mais il est rattrapé par Burgaudeau aux 500 mètres. Georg Zimmermann lance le sprint et gagne l'étape.
Denier rescapé de l'échappée, le Belge Victor Campenaerts (Lotto Dstny) franchit seul en tête les cols de la Madeleine et du Mollard pour s'approprier le maillot à pois du meilleur grimpeur avant d'être repris par le peloton à 12,3 km de l'arrivée, au pied du Col de la Croix-de-Fer, la dernière ascension de l'étape. À 5,3 km du sommet, le maillot jaune Jonas Vingegaard (Jumbo Visma) place une vive attaque et fait la montée seul en tête en creusant progressivement des écarts sur ses poursuivants pour l'emporter avec 41 secondes d'avance sur Adam Yates (UAE Emirates).
Au col du Cucheron (30 km de l'arrivée), cinq hommes passent en tête : Tiesj Benoot (Jumbo Visma), Giulio Ciccone (Trek Segafredo), Clément Champoussin (Arkéa Samsic), Julian Alaphilippe (Soudal Quick-Step) et Jonathan Castroviejo (Ineos Grenadiers) avec 1 min. 30 sec. d'avance sur le peloton maillot jaune. Dans l'ascension suivante du col de Porte, Ciccone attaque à 24 km de l'arrivée. Il est suivi par le seul Alaphilippe mais à 20 km du terme, le Français lâche prise et Ciccone s'isole en tête pour franchir ce col avec une quarantaine de secondes d'avance sur le peloton. Giulio Ciccone réussit à préserver un avantage suffisant dans le mur final vers La Bastille pour gagner l'étape devant Jonas Vingegaard, qui démontre encore une fois son état de forme dans cette course à étapes qu'il remporte avec brio.