La 1re étape, longue de 176,4 kilomètres s'élance de Verneuil-sur-Vienne à travers les routes sinueuses de la Haute-Vienne et de la Creuse pour arriver à La Souterraine. Elle comprend quatre points de sprint : Saint-Pardoux-le-Lac au km 28,1, Fromental au km 47,4, Saint-Maurice-la-Souterraine au km 84,9, Dun-le-Palestel au km 136,2. Elle comprend aussi trois points de meilleurs grimpeurs : la côte de Bessines (Cat 3 - 5,11%) au km 42,0, la Côte de Crozant (Cat 3 - 4,56% - Trophée de la Creuse) au km 125,8, et la côte de la Cazine (Cat 3 - 4,54%) au km 169,7.
Elle comprend quatre points de sprint intermédiaire : Razac-sur-l'Isle au km 36,2, Vanxains au km 99,8, Mareuil - Trophée Corrèze le département au km 137,5, Tocane-Saint-Apre au km 171,2. Elle inclut trois points de meilleur grimpeur : la côte des Basses Veyrinas (Cat 3 - 4,94%) au km 43,3, la côte de Siorac (Cat 3 - 6%) au km 74,6, et la côte du Colombier (Cat 3 - 3,3%) au km 162,2.
3e étape
La 3e étape, la plus montueuse de cette édition, d'une longueur de 181,7 kilomètres, se déroule entièrement en Corrèze et part de Donzenac pour arriver à Malemort. Elle comprend quatre points de sprint : Jugeals-Nazareth au km 49,6, Sadroc au km 125,1, Saint-Bonnet-l'Enfantier - Trophée Corrèze le département au km 128,8, Objat au km 153,3. Surtout, elle inclut quatre points de meilleur grimpeur : la côte d'Albignac (Cat 2 - 6,34%) au km 73,0, la côte de Sainte-Féréole (Cat 2 - 5,92%) au km 114,0, la côte de Vertougit (Cat 1 - 6,31%) au km 144,3, et la côte de Saint-Antoine des Plantades (Cat 2 - 4,47%) au km 173,4.
4e étape
La 4e et dernière étape, longue de 174,8 kilomètres s'élance de Saint-Laurent-sur-Gorre pour arriver boulevard de Beaublanc à Limoges. Elle comprend quatre points sprints : Saint-Mathieu au km 22,0, Cognac-la-Forêt au km 53,0, Rilhac-Rancon au km 116,6, Limoges - premier passage sur la ligne d'arrivée - Trophée Corrèze le Département au km 138,8. Elle inclut trois points de meilleur grimpeur : la côte du Tuquet (Cat 2 - 7,30%) au km 74,7, la côte de Boisseuil (Cat 3 - 4,89%) au km 88,6, et la côte du Palais (Cat 3 - 5,24%) au km 113,4.
Dès le départ réel, un trio composé de Léo Danès (Team U Nantes Atlantique), Jérémy Leveau (Go Sport-Roubaix Lille Métropole) et Axel Narbonne-Zuccarelli (Nice Métropole Côte d'Azur) fausse compagnie au peloton mais il est vite repris. Un deuxième contre a lieu quelques kilomètres plus loin avec Anthony Turgis (TotalEnergies) et Kévin Besson (Nice Métropole Côte d'Azur), qui compteront jusqu'à 15 secondes d'avances avant d'être repris. Le premier sprint intermédiaire à Saint-Pardoux (km 28) est remporté par Sandy Dujardin (TotalEnergie).
Au sommet de la côte de Bessines (km 42), Alan Boileau (B&B Hôtels-KTM) passe en tête devant le tenant du titre, Warren Barguil (Team Arkéa Samsic) et Valentin Ferron (TotalEnergies). Le deuxième sprint à Fromental est gagné par Matteo Trentin (UAE Team Emirates). Après le sprint, quatre coureurs prennent le large : Valentin Paret-Peintre (AG2R Citroën Team), Alexis Gougeard (B&B Hôtels-KTM), Kenny Molly (Bingoal-Pauwels Sauces-WB) et Clément Carisey (Go Sport-Roubaix Lille Métropole). Un contre se forme composé de Joel Nicolau (Caja Rural-Seguros RGA) et d'Axel Narbonne-Zuccarelli (Nice Métropole Côte d'Azur). Nicolau réussira à rejoindre le quatuor de tête qui compte 1 min 10 s d'avance sur le peloton. L'écart grimpe à 5 min 10 s puis à 6 min 0 s, moment où Narbonne Zuccarelli est repris par le peloton.
Le 3e sprint intermédiaire (km 84) à Saint-Maurice-la-Souterraine est remporté par Carisey. A ce moment, le peloton a plus de 7 min 0 s de retard et l'équipe Movistar accompagnée de la Groupama-FDJ imposent un rythme soutenu à l'avant du peloton faisant fondre l'avance à 5 min 40 s. Nicolau passe en tête de la côte de Crozant (km 125). Gougeard est victime d'une crevaison peu après le passage au sommet de la côte de Crozant. Au même moment, une chute à lieu à l'arrière du peloton qui touche Benoît Cosnefroy (AG2R Citroën Team) et Guillaume Martin (Cofidis) mais aussi Alex Aranburu (Movistar Team) et Sinuhé Fernández (Equipo Kern Pharma). Epaulé par deux équipiers, Martin réussit à rentrer dans le peloton quelques kilomètres plus loin.
À 32 kilomètres de l'arrivée, l'échappée possède 2 min d'avance sur le peloton. Alors qu'il ne reste que 40 s d'avance, l'échappée ne comprend plus que quatre coureurs : Nicolau, Carisey, Molly et Paret-Peintre. Dans la côte de la Cazine, dernière difficulté répertoriée de l'étape, Valentin Madouas (Groupama-FDJ) s'échappe tandis que Warren Barguil, accompagné de Stan Dewulf (AG2R Citroën Team), se lancent à sa poursuite. Madouas est rattrapé tandis que Gougeard, victime d'une crevaison dans l'échappée, mène le peloton. C'est finalement le Français Julien Simon (TotalEnergie) qui remporte la première étape et endosse le premier maillot jaune de cette 55e édition après avoir attaqué et surpris les sprinteurs dans les derniers mètres.
2e étape
Au cours de cette étape périgourdine, une échappée animée par Alexis Gougeard et Franck Bonnamour fait long feu. C'est un peloton groupé qui se présente à l'arrivée, le sprint étant remporté par Alex Aranburu qui endosse le maillot jaune.
Rui Costa attaque à deux km de l'arrivée à Malemort, mais il se trompe de route au dernier rond-point et perd toute chance de victoire. Finalement, c'est Diego Ulissi qui remporte le sprint devant Van Avermaet et Aranburu[2]. L'étape la plus accidentée de ce Tour du Limousin n'a pas permis de faire la différence, Aranburu conservant le maillot jaune qu'il avait gagné en Périgord.
4e étape
La dernière étape emprunte des reliefs modérés autour de la capitale limousine. À 1 km 800 de l'arrivée, Vincenzo Albanese se détache dans la montée finale et il parvient à résister au sprint du peloton, gagnant sa première victoire professionnelle. Il est suivi par Alex Aranburu, premier Espagnol à remporter le Tour du Limousin[3]. Le podium est complété par l’Italien Diego Ulissi (UAE Team Emirates) et le Belge Greg Van Avermaet (AG2R Citroën Team). Le Français le mieux classé est Valentin Madouas, qui finit 4e à 19 secondes du vainqueur.