At the start of the stage, fourteen riders quickly formed the breakaway group, including amongst others the leader of the mountains classification Tim Wellens; former stage winners Thomas De Gendt and André Greipel; and the 2019 Giro d'Italia mountains classification winner Giulio Ciccone who was also the best placed in the general classification at 1' 43 behind Julian Alaphilippe. The advantage over the peloton quickly rose to five minutes, growing to eight minutes at the foot of the Ballon d'Alsace, with Deceuninck-Quick-Step struggling to bring the peloton closer and stopping the chase altogether. Meanwhile at the front, Wellens was gathering most points for the mountains classification, occasionally helped by his teammate De Gendt. De Gendt sprinted away to take the points on the Col des Croix and took a lead of 30 seconds in the descent, but was overtaken on the next climb when the breakaway group got split up completely. Four riders remained in the lead and started the ascent of the final climb with still four minutes of advantage over the peloton: Giulio Ciccone and three Flemish riders: Wellens, Xandro Meurisse and Dylan Teuns. Ciccone and Teuns still had two minutes of advantage over the peloton with one kilometre to go, in spite of attacks from Warren Barguil and Mikel Landa in front of a chasing peloton. Teuns drove the full last km just in front of Ciccone, dropping him only in the last 100 metres to take his first Grand Tour stage win, while Meurisse managed to take third place over a minute behind. Geraint Thomas was fastest of the favorites, gaining some seconds over most other favorites and Alaphilippe. Bigger time losses were noted for Steven Kruijswijk and Enric Mas who lost over half a minute, while Vincenzo Nibali and Romain Bardet lost almost a full minute. Despite finishing second, Ciccone did manage to take over the yellow jersey from Alaphilippe by a narrow margin of only six seconds.