De achtste etappe, die 171,4 km lang was tussen Saint-Méen-le-Grand en Laval, had geen moeilijkheden en alles wees erop dat een massaspurt de winnaar van de dag zou kronen. Er waren dan ook geen aanvallen te melden; niemand wilde in de ontsnapping gaan.
De eerste actie van de dag was de tussensprint, die plaatsvond na 80 km koers. Deze werd gewonnen door Jonathan Milan, die zijn talent niet hoefde te forceren om Tim Merlier te verslaan, die niet al zijn krachten in de strijd gooide.
Kort na de sprint vertrokken Mathieu Burgaudeau en Mattéo Vercher (TotalEnergies) samen. De twee teamgenoten reden een stuk samen en hadden tot 1 minuut voorsprong, maar Vercher moest Burgaudeau loslaten na 13 km van de finish, terwijl Tim Merlier op hetzelfde moment een mechanisch probleem had en van fiets moest wisselen. Het avontuur van Mathieu Burgaudeau eindigde op 9 km van de finish.
Het peloton snelt daarna naar de finish onder leiding van de sprintteams. Het Alpecin-Deceuninck-team lanceerde de sprint voor Kaden Groves, maar Jonathan Milan ging krachtig voorbij met Wout van Aert in zijn wiel. De Italiaan was de sterkste en won voor de Belg, terwijl Kaden Groves de derde plaats innam.