Die Gruppe der Favoriten ging geschlossen in die steile Schlusssteigung zum Alto de Malhão. Die erste Attacke von Miguel Angel Lopez (Astana) konnte die Konkurrenz noch abwehren, aber sein zweiter Antritt brachte die Entscheidung. Lopez löste sich einige Meter und holte nach 170 Kilometern von Albufeira nach Malhão den Etappensieg. Zweiter wurde Daniel Martin (Israel Start-Up Nation), der zwei Sekunden nach Lopez das Ziel erreichte.
Leader Remco Evenpoel (Deceuninck-QuickStep) erreichte vier Sekunden nach dem Sieger als Dritter das Ziel. An seinem Hinterrad folgte Maximilian Schachmann (Bora-hansgrohe) zeitgleich.
Damit liegt Evenpoel vor dem abschließenden Einzelzeitfahren weiter an der Spitze der Gesamtwertung. Daniel Martin und Maximilian Schachmann folgen zeitgleich auf den Plätzen zwei und drei.
 
So lief das Rennen
Kurz nach dem Start löste sich eine kleine Ausreißergruppe um Dries de Bondt (Alpecin-Fenix), David González (Caja Rural), Tom Devriendt (Circus-Wanty Gobert), Daniel Hoelgaard (Uno-X), Luís Mendonça & Tiago Antunes (Efapel), Rafael Lourenço (Kelly-InOutBuild-UDO), Daniel Freitas (Miranda-Mortágua) und João Rodrigues (W52-FC Porto). Das Feld kontrollierte den Rückstand.
Als es rund 25 km vor dem Ziel das erste Mal den Alto do Malhão hinauf ging, attackierte Vincenzo Nibali (Trek-Segafredo) aus dem Hauptfeld, wurde aber nach der Steigung wieder eingeholt. An der Spitze fuhr 20 km vor dem Ziel João Rodrigues allein. Der Rest der Ausreißer war bereits vom Feld geschluckt. Auch Rodrigues wurde wenige Kilometer später vom Feld eingeholt. 
Die Favoritengruppe ging geschlossen in die rund drei Kilometer lange Schlusssteigung. Amaro Antunes setzte die erste Attacke, kam aber nicht weg. Dann probierte es Lopez zum ersten Mal, konnte aber kein Loch reißen. Die zweite Attacke von Lopez saß und er holte sich den Sieg. 
Das Profil der Etappe:

Profil der 4. Etappe der Volta ao Algarve 2020


 
[ngg_images source=“galleries“ container_ids=“58″ display_type=“photocrati-nextgen_basic_imagebrowser“ ajax_pagination=“0″ order_by=“sortorder“ order_direction=“ASC“ returns=“included“ maximum_entity_count=“500″]