Partant de la commune de Saint-Léonard-de-Noblat (Haute-Vienne), cité d'adoption de Raymond Poulidor qui y est décédé le , cette étape s'oriente principalement vers l'est en passant par le département de la Creuse. Elle est vallonnée et ne comporte que deux côtes de 4e catégorie, rejoignant ensuite le Massif central et la côte de Pontaumur répertoriée en 3e catégorie avant de s'élever en fin d'étape sur les pentes du volcan du Puy de Dôme pour une ascension de 13,3 kilomètres avec une pente moyenne de 7,7 % dont les quatre derniers kilomètres avant la ligne d'arrivée sur une étroite route tracée en spirale autour du volcan se raidissent à une déclivité moyenne proche des 12 %.
Ils sont 169 coureurs à avoir pris le départ de cette étape. Dès le début de la course, une échappée se forme avec quatorze coureurs : les trois Français, Pierre Latour et Mathieu Burgaudeau (TotalEnergies) et Clément Berthet (AG2R Citroën), le Slovène Matej Mohorič (Bahrain Victorious), l'Espagnol Gorka Izagirre et l'Américain Matteo Jorgenson (Movistar), les Canadiens Michael Woods et Guillaume Boivin (Israel-Premier Tech), le Belge Victor Campenaerts (Lotto Dstny), le Norvégien Jonas Abrahamsen et le Danois Jonas Gregaard Wilsly (Uno X), le Kazakh Alexey Lutsenko et l'Espagnol David de la Cruz (Astana) ainsi que le maillot à pois, l'Américain Neilson Powless (EF Education). Le Danois Mads Pedersen vainqueur de la 8e étape, est lâché par le peloton qui a pris en chasse les hommes de tête. À 155 km de l'arrivée, les échappés possèdent trois minutes d'avance sur le peloton. Le Norvégien Jonas Abrahamsen remporte le sprint intermédiaire du lac de Vassivière devant le Slovène Matej Mohorič et le Danois Jonas Gregaard Wilsly. À 107 km du terme de l'étape, les fuyards portent leur avance à dix minutes. L'Américain Powless passe en tête la côte de Pontcharraud après avoir passé en première position celle de Felletin un peu plus tôt, toutes les deux classées en 4e catégorie. En haut de la côte de Pontaumur (3e catégorie), c'est à nouveau Powless qui passe en tête devant le Belge Victor Campenaerts. À 53 km du Puy de Dôme, cinq coureurs de l'échappée tentent leur chance mais sont rejoints quelques instants plus tard, pour se retrouver à nouveau à quatorze en tête de la course, leur avance étant de treize minutes.
À 47 km du but, l'Américain Matteo Jorgenson porte une attaque et se détache du groupe des échappés. À 40 km de l'arrivée, il compte 25 secondes sur ses poursuivants. Dix kilomètres plus loin, il n'a plus que quinze secondes sur Mohorič, Powless, de la Cruz et Burgaudeau et quarante secondes sur le reste du groupe duquel le Kazakh Alexey Lutsenko et le Norvégien Jonas Abrahamsen lâchent prise. David de la Cruz connaît un problème mécanique à 21 km du terme et doit laisser filer ses trois compagnons qui entament l'ascension finale du Puy de Dôme (13 km) avec une minute de retard sur Jorgenson. Le peloton se trouve alors à plus de 16 minutes de l'Américain. À 3 km du sommet, Mohorič s'extirpe du groupe des poursuivants pour tenter de rejoindre Jorgenson. Toutefois, le Slovène est repris et dépassé à 1,7 km de l'arrivée par le Canadien Michael Woods, revenu de l'arrière. Sous la flamme du dernier kilomètre, Jorgenson devance encore Woods de quinze secondes mais ce dernier revient très fort. À 450 m de la ligne, Woods dépose l'Américain et remporte l'étape en solitaire. Jorgenson termine quatrième après avoir été dépassé par le Français Pierre Latour et le Slovène Matej Mohorič.
Dans le groupe maillot jaune, Tadej Pogačar attaque à 1,5 km du sommet, distançant Jonas Vingegaard qui s'accroche à une vingtaine de mètres et perd finalement 8 secondes sur le Slovène à l'arrivée. Le Danois conserve néanmoins son maillot jaune pour 17 secondes. Pogačar termine treizième de l'étape à huit minutes et dix-neuf secondes du vainqueur du jour[2].