Dès le début de l'étape disputée sous la pluie, quatre hommes font la course en tête : le maillot bleu du meilleur grimpeur Thibaut Pinot (Groupama-FDJ), Thomas Champion (Cofidis), Samuele Zoccarato (Green Project-Bardiani) et Stefano Gandin (Corratec). Après être passé en tête du premier col de la journée, Pinot se laisse distancer et est repris par le peloton, laissant ses trois compagnons d'échappée poursuivre leur raid à l'avant. À 152 km de l'arrivée, le champion du monde Remco Evenepoel est victime d'une chute causée indirectement par la présence d'un chien sur la chaussée. Il reste une minute au sol sur le trottoir avant de se relever avec l'aide de son équipe et de réintégrer le peloton grâce à ses coéquipiers quelques kilomètres plus loin. À une centaine de kilomètres du terme, les trois fuyards (Champion, Zoccarato et Gandin) comptent un peu plus de deux minutes d'avance sur le peloton. L'écart se maintient longtemps autour de la minute mais, à 20 km de l'arrivée, Gandin et Champion sont repris par le peloton. Zoccorato fait cavalier seul encore pendant quelques kilomètres mais il est finalement rattrapé par le peloton à 6,5 km du but.
La fin de l'étape courue sur des routes mouillées provoque plusieurs chutes impliquant d'abord à 7 km de l'arrivée Primož Roglič, Fernando Gaviria et le maillot rose Andreas Leknessund puis encore Remco Evenepoel à 2,4 kilomètres de l'arrivée. Le sprint d'un peloton fortement réduit à causes des différentes chutes est remporté par l'Australien Kaden Groves (Alpecin Deceuninck) devant le maillot cyclamen Jonathan Milan alors qu'une dernière chute se produit sur la ligne d'arrivée pour Mark Cavendish.