Sans grande difficulté pour les 174 coureurs au lendemain de la première étape de montagne dans les Vosges. Le coureur néerlandais de 26 ans a devancé au sprint l'Australien Caleb Ewan (Lotto Soudal) et le maillot vert, le Slovaque Peter Sagan (BORA-hansgrohe).

L'Italien Sonny Colbrelli (Bahrain-Merida) et Jasper Philipsen (UAE-Team Emirates) complètent le top 5. Jasper Stuyven (Trek-Segarfedo) s'est classé 8e. L'Italien Giulio Ciccone (Trek-Segafredo), maillot jaune depuis sa 2e place à la Planche des Belles Filles jeudi, a terminé 23e dans le peloton. Il conserve la première place du général avec 6 secondes d'avance sur le Français Julian Alaphilippe (Deceuninck-Quick Step) et 32 sur Dylan Teuns (Bahrain-Merida). Les Français Stéphane Rossetto (Cofidis) et Yoann Offredo (Wanty-Gobert) sont sortis du peloton dès les premiers hectomètres de course. Ils ont roulé devant une grande partie de la journée, le peloton ne les avalant qu'à 12 km de l'arrivée.

Les équipes de sprinters ont alors préparé l'emballage final, qui a vu Groenewegen l'emporter de justesse devant Ewan. Groenewegen, dont c'est le 46e succès pro, a signé sa 4e victoire d'étape sur le Tour. Il avait auparavant enlevé une étape en 2017 et deux en 2018. L'Amstellodamois avait chuté dans le final de la 1e étape samedi dernier à Bruxelles, où la victoire était revenue à son coéquipier et poisson-pilote attitré Mike Teunissen.

La 8e étape, Mâcon - Saint-Étienne mènera les coureurs samedi sur un parcours accidenté de 200 km qui comprendra pas moins de cinq cols de 2e catégories et deux de 3e. Le sommet du dernier, la Côte de la Jaillère (3e cat. 1,9 km à 7,9 %), est situé à 12,5 km de la banderole d'arrivée.