Au classement général, Adam Yates conserve la première place. Un groupe de treize coureurs s'isolait en tête de la course avec Thomas De Gendt (Lotto Soudal), Louis Meintjes (Intermarché-Wanty Gobert), Sergio Samitier et Antonio Pedrero (Movistar), Joe Dombrowski (UAE), Attila Valter (Groupama-FDJ), Koen Bouwman et Antwan Tolhoek (Jumbo-Visma), Rigoberto Uran (Education First-Nippo), Lennard Kamna (BORA-hansgrohe), Juan Pedro Lopez (Trek-Segafredo) et Clément Champoussin (AG2R Citroen).

Dans la montée du Port d'El Canto, col hors catégorie et avant-dernière difficulté de la journée, Kämna, 13e du général, sortait du groupe de tête et tentait sa chance en solitaire. L'Allemand était finalement repris à 15 km de l'arrivée, au début de l'ascension du Port Ainé, col hors catégorie et dernière difficulté de la journée."

À 10 kilomètres de la ligne, Steven Kruisjwijk était le premier à placer une attaque mais était rapidement repris par le peloton mené par les Ineos Grenadiers.

C'était ensuite au tour de Jhoan Esteban Chaves, deuxième du classement du meilleur grimpeur derrière le leader du général Adam Yates, de tenter sa chance à sept kilomètres de l'arrivée.

Le Colombien parvenait à distancer le peloton et comptait 20 secondes d'avance. Derrière, Enric Mas et Nairo Quintana partaient en contre mais étaient repris rapidement. Chaves résistait finalement au retour du peloton pour s'imposer devant Michael Woods et Geraint Thomas. Le Colombien décroche ainsi la 16e victoire de sa carrière, la première depuis une victoire lors de la 19e étape du Tour d'Italie 2019.

Au classement général, Adam Yates reste en tête avec 45 et 49 secondes d'avance sur ses équipiers Richie Porte et Geraint Thomas.

Vendredi, la cinquième étape mènera le peloton entre La Pobla de Segur et Manresa sur un parcours vallonné long de 201,1 km.