Britain’s Geraint Thomas had his lead cut to 19 seconds with one stage of the Volta ao Algarve remaining.
The Welsh rider finished three seconds back as the peloton split over the final sprint, which allowed Team Sky colleague Michal Kwiatkowski to edge closer in the overall standings.
Pole Kwiatkowski was inside the top 10, with Dylan Groenewegen winning his second race stage for Lotto-Jumbo.
Thomas, 31, has previously won the Volta ao Algarve in 2015 and 2016.
- Froome slips back after puncture at Ruta del Sol
- BeSpoke Weekly: Wiggle High5 training camp & the return of Froome
Stage 4 result
1. Dylan Groenewegen (Ned/LottoNL-Jumbo) 4hrs 33mins 49secs
2. Matteo Pelucchi (Ita/Bora-Hansgrohe) same time
3. John Degenkolb (Ger/Trek-Segafredo)
4. Florian Senechal (Fra/Quick-Step Floors)
5. Jurgen Roelandts (Bel/BMC Racing Team)
6. Timothy Dupont (Bel/Wanty-Groupe Gobert)
7. Hugo Hofstetter (Fra/Cofidis Solutions Credits)
8. Jasper De Buyst (Bel/Lotto Soudal)
9. Loic Vliegen (Bel/BMC Racing Team)
10. Michal Kwiatkowski (Pol/Team Sky)
1. Geraint Thomas (GB/Team Sky) 14hrs 35mins 50secs
2. Michal Kwiatkowski (Pol/Team Sky) +19secs
3. Nelson Oliveira (Por/Movistar) +32secs
4. Bob Jungels (Lux/Quick-Step Floors) +52secs
5. Tejay van Garderen (USA/BMC Racing Team) +53secs
6. Bauke Mollema (Ned/Trek-Segafredo) +61sec
7. Jaime Roson (Spa/Movistar) +78secs
8. Maximilian Schachmann (Ger/Quick-Step Floors) +79secs
9. Felix Grossschartner (Aut/Bora-Hansgrohe) +80secs
10. Vasil Kiryienka (Blr/Team Sky) at +84secs