With 20km to go, Belgian Lotto-Soudal rider Tim Wellens went on the attack, and brought a group of big-name riders with him.
Vicenzo Nibali (Trek-Segafredo) was part of the leading peloton, joined by young rider Remco Evenpoel of Deceuninck-Quick-Step at 15km to go.
At 10km, a compact bunch of Team INEOS, Team Sunweb, Alpecin-Fenix and Deceuninck-Quick-Step were in contention for the win.
As the finishing line drew ever closer there was no rider willing or able pull out by themselves.
Dutchman Jakobsen was able to sprint out from the pack to take the win, with Cofidis' Elia Viviana in second and third place went to CCC Team's Matteo Trentin.
1 - Fabio Jakobsen (Ned) Deceuninck-QuickStep 4:52:59
2 - Arnaud Demare (Fra) Groupama-FDJ
3 - Pascal Ackermann (Ger) Bora-Hansgrohe
4 - Simone Consonni (Ita) UAE Team Emirates
5 - Jasper De Buyst (Bel) Lotto Soudal
6 - Søren Kragh Andersen (Den) Team Sunweb
7 - Edward Theuns (Bel) Trek-Segafredo
8 - Jon Aberasturi Izaga (Spa) Caja Rural-Seguros RGA
9 - Christophe Laporte (Fra) Cofidis, Solutions Credits
10 - Neilson Powless (USA) Team Jumbo-Visma
Van der Poel: I’m in the Algarve to prepare for the Classics