De Libourne à Limoges, cette étape, s'orientant vers le nord-est à travers la Gironde, la Dordogne puis la Haute-Vienne, est la seconde étape la plus longue de cette 110e édition. Dans les cent premiers kilomètres, le parcours remonte les vallées de l'Isle et de la Dronne, jusqu'à Saint-Pardoux-la-Rivière (km 123), au pied de la première difficulté répertoriée, la côte de Champs-Romain (3e catégorie, km 130,4, 2,8 km à 5,2 %). Le sprint intermédiaire est placé en aval, à Tocane-Saint-Apre (km 79). Les soixante-dix derniers kilomètres présentent un parcours vallonné jusqu'à l'arrivée à Limoges, à travers le parc naturel régional Périgord-Limousin. Dans le final, deux nouvelles ascensions répertoriées font leur apparition : la côte de Masmont (4e catégorie, km 184,7, 1,3 km à 4,5 %) et la côte de Condat-sur-Vienne (4e catégorie, km 191,4, 1,2 km à 5,4 %). L'arrivée à Limoges est jugée au sommet de l'avenue des Bénédictins (800 m à 4 %) sur la place Jourdan[1].
Le départ réel est retardé pour permettre au Français Laurent Pichon (Arkéa-Samsic), victime d'une crevaison, de revenir dans le peloton. Parmi les 172 coureurs qui ont pris le départ, nombreux sont ceux qui présentent de l'intérêt pour la formation d'une échappée. À la sortie des Peintures (km 20,8), trois coureurs prennent le large, le Belge Tim Declercq (Soudal Quick-Step) et les deux Français Anthony Delaplace (Arkéa-Samsic) et Anthony Turgis (TotalEnergies). Situé à Tocane-Saint-Apre (km 79), le sprint intermédiaire est remporté par Anthony Delaplace devant Anthony Turgis ; dans le peloton, le maillot vert belge Jasper Philipsen (Soudal Quick-Step) devance le Belge Jordi Meeus (Bora-Hansgrohe), avec cinq minutes et quatre secondes de retard sur les coureurs de tête. Le groupe maillot vert, formé pour se jouer les points du sprint intermédiaire, persiste quelques kilomètres à l'avant du peloton, mais tout rentre dans l'ordre après la prise en main de la Jumbo-Visma.
Au sommet de la côte de Champs-Romain (3e catégorie, km 130,4, 2,8 km à 5,2 %), Anthony Turgis passe en tête de l'échappée, avec deux minutes et cinquante-huit secondes d'avance sur le peloton. Peu avant le passage du peloton à La Chapelle Verlaine (km 136), le Britannique Mark Cavendish (Astana Qazaqstan), codétenteur du record de victoires d'étapes remportées sur le Tour de France avec le quintuple vainqueur du Tour de France Eddy Merckx, chute. Blessé à l'épaule, il est contraint à l'abandon. A la traversée de la Petite Garde (km 161,5), le Danois Kasper Asgreen (Soudal Quick-Step) s'extirpe du peloton ; s'il ne revient pas sur l'échappée, il reste intercalé entre les deux groupes, puis il est repris à Champagnac (km 179,2), à 21 km du terme de l'étape. Dans la côte de Masmont (4e catégorie, km 184,7, 1,3 km à 4,5 %), Anthony Turgis distance ses compagnons d'échappée ; il passe en tête seul, avec vingt-sept secondes d'avance sur les deux coureurs lâchés, Anthony Delaplace et Tim Declercq, et quarante-trois secondes sur le peloton. Si le coureur d'Arkéa-Samsic est immédiatement repris par le peloton, le coureur de Soudal Quick-Step résiste jusqu'au pied de la dernière ascension, la côte de Condat-sur-Vienne (4e catégorie, km 191,4, 1,2 km à 5,4 %). Au sommet, Anthony Turgis ne compte plus que huit secondes d'avance sur le peloton.
Le coureur de tête cesse de résister au retour du peloton, à 8,2 kilomètres de Limoges. À 6 kilomètres de l'arrivée, une chute causée par un spectateur imprudent se produit dont le Britannique Simon Yates (Jayco AlUla), l'Espagnol Mikel Landa (Bahrain Victorious) sont victimes et vont perdre de précieuses secondes ; le Belge Steff Cras (TotalEnergies) treizième au classement général, également pris dans la chute, doit abandonner. Regroupé, le peloton prépare le sprint final. Le Danois Mads Pedersen (Lidl-Trek) s'impose en force au sommet de l'avenue des Bénédictins (800 m à 4 %) devant les Belges Jasper Philipsen et Wout van Aert (Jumbo-Visma).
Au niveau des différents classements : le Danois Jonas Vingegaard (Jumbo-Visma) conserve son maillot jaune, comme le Slovène Tadej Pogačar (UAE Emirates) avec le maillot blanc, comme Jasper Philipsen avec le maillot vert et comme l'Américain Neilson Powless (EF Education-EasyPost) avec le maillot à pois. L'équipe Jumbo-Visma reste en tête du classement par équipes. Anthony Turgis est récompensé du prix de la combativité pour avoir été le dernier coureur de l'échappée repris par le peloton.