Koersverloop
In het regenachtige begin van de etappe trokken vier renner ten aanval: de Belg Brent Van Moer, de Noor Andreas Leknessund, de Kazak Jevgeni Fjodorov en de Fransman Bruno Armirail.[2] Hun voorsprong bleef rond de tweeëneenhalve minuut hangen, door toedoen van Alpecin-Deceuninck en Intermarché-Wanty. De koplopers pakten de eerste punten van de tussensprint in Énocq en daarachter sprintten Jonathan Milan, Tim Merlier, Biniam Girmay en Jasper Philipsen naar de plekken 5 t/m 8.
Het peloton reed onder leiding van Visma | Lease a Bike naar de eerste klim van de finale, de Côte du Haut Pichot. De kopgroep werd teruggepakt en naast Visma-Lease a Bike zaten ook Tadej Pogačar, Tim Wellens, Primož Roglič, Mathieu van der Poel en Jasper Philipsen van voren. Jonathan Milan kwam op de klim ten val, waardoor er een beuk ontstond in het peloton. Nadat Wellens als eerste boven was gekomen, voor zijn teamgenoot Pogačar, volgde de samensmelting van het peloton al snel, waarna ze snel door reden naar de voet van de Côte de Saint-Étienne-au-Mont.
Hier pakte Tiesj Benoot de leiding voor zijn kopman Jonas Vingegaard en nadat Matteo Jorgenson demarreerde ontstond een kopgroep van negen renners: Vingegaard, Jorgenson, Van der Poel, Pogačar, Romain Grégoire, Remco Evenepoel, Kévin Vauquelin, Jhonatan Narvaez en Carlos Rodríguez. Pogačar kwam als eerste boven en wist hiermee de bergtrui te pakken. Het peloton ging onder aanvoering van Red Bull-BORA-hansgrohe in de achtervolging en wist aan de voet van de volgende klim, de Côte d'Outreau, weer aan te sluiten. Hier kwam Vauquelin als eerste boven, maar een demarrage bleef uit. Net na de top kwam die er wel, van Vingegaard, maar Evenepoel en Pogačar zaten al snel op zijn wiel. Ondanks een uitval van Florian Lipowitz reed de groep van ongeveer 30 renners naar de laatste oplopende kilometer in Boulogne-sur-Mer.
Daar begon de eindsprint voor de etappezege en, omdat klassementsleider Philipsen op kleine achterstand reed, de gele trui. Julian Alaphilippe deed een eerste poging, maar Van der Poel dichtte snel het gat, waarna hij op kop werd gedwongen. Van kop af aan begon hij de eindsprint die hij tot de finish vol wist te houden. Pogačar was in zijn wiel de eerste achtervolger en werd tweede, terwijl Vingegaard derde werd. Mathieu van der Poel pakte zijn tweede touretappe van zijn carrière (na de 2e etappe in 2021) en daarbij ook de gele trui.