Jumbo-Visma immediately took the lead of the peloton, controlling the gap together with Groupama-FDJ which never went above the five-minute mark for the main group. With so many riders in the head of the race collaboration was never ideal, Vadim Pronskiy and Simone Velasco of Astana attacked together and built around 2 minutes over the rest of the group at it's maximum.
Ben Healy accumulated enough points from the breakaway to jump into the KOM lead. In the penultimate ascent to Serrada the front group began to split as the pace rised, with 12 riders standing out: Ben Healy, Aurélien Paret-Peintre, Derek Gee, Filippo Zana, Carlos Verona, Valentin Paret-Peintre, Patrick Konrad, Jack Haig, Ben Swift, Jonathan Lastra, Diego Ulissi and Vadim Pronskiy.
Jumbo-Visma kept the pace high in the peloton. The breakaway entered the final ascent with around 3 minutes of lead over the Jumbo-led peloton. The remnants of the breakaway were caught with 9 kilometers to go, after Rohan Dennis pulled out of the head of the peloton
UAE Team Emirates took over.
Bruno Armirail was dropped from the reduced group, with UAE gradually ramping up as Formolo, McNulty and then Jay Vine accelerated the pace and split the group with 8 kilometers to go. João Almeida launched a first attack, followed by Thomas, Roglic, Kuss and Dunbar. Filippo Zana helped the group go clear pacing for Dunbar, but shortly after Almeida attacked again going clear.
The effort was visible in the faces of all climbers, gaining time quickly on the competition. Geraint Thomas jumped over the gap a few kilometers later, with Roglic unable to respond, being helped by Sepp Kuss until the finish, Eddie Dunbar followed the wheel.
The two collaborated well and expanded the gap towards the chasers, in the final sprint João Almeida kickstarted the move and took the stage win, winning 4 seconds in bonifications on Thomas, and on the road Roglic arrived 25 seconds later in third place together with Eddie Dunbar.