Dutch sprinter Dylan Groenewegen (LottoNL-Jumbo) took his second victory of the race, claiming the bunch sprint win ahead of Matteo Pelucchi (Bora-Hansgrohe) in second and John Degenkolb (Trek-Segafredo) in third.
>> Struggling to get to the shops? Try 6 issues of Cycling Weekly magazine for just £6 delivered to your door <<
Welshman Thomas maintained his overall race lead ahead of Sky team-mate Michal Kwiatkowski, with Nelson Oliveira (Movistar) in third.
How it happened
There were some familiar names in the day’s escape group, with mountains classification leader Benjamin King (Dimension Data) going out in the hunt for climbing points on the day’s two categorised climbs along with João Rodrigues (W52-FC Porto), who held the KOM jersey after stage one.
They were joined by four other riders: Rory Sutherland (UAE Team Emirates), Julen Amezqueta (Caja Rural-Seguros RGA), Bruno Silva (Efapel) and Aleksandr Grigorev (Sporting-Tavira).
King crested the two categorised climbs in the lead to grab the maximum points, and then the break settled in to continuing its day’s work.
The peloton seemed happy to let them continue – albeit it with a narrow advantage. As the break hit 20km to go, the gap was less than a minute and Silva was dropped on a minor climb.
Philippe Gilbert (Quick-Step Floors), Guillaume Bonnafond Cofidis) and Dylan Teuns (BMC) picked this moment to attack from the bunch. They were joined by Jasha Sutterlin (Movistar).
Despite having fresher legs than the original break, the Gilbert quartet struggled to make contact with the front group, stuck between them and the peloton.
By the time the junction between the two leading groups was made with around 10km to go, the peloton was just 10 seconds behind them.
Gilbert looked to be the most committed in making the break succeed, taking long turns at the front, gritting his teeth. However, it wasn’t to be, and they were reeled in with 3km to go to set up a bunch sprint.
LottNL-Jumbo lined-up Groenewegen perfectly for the finale, and the Dutchman duly claimed the win – his third of the year so far.
The 2018 Volta ao Algarve concludes on Sunday, February 18, with stage five. It’s a tricky course from Faro to Malhão over 173.5km, with plenty of hills and a 3km finishing climb that pitches up in places at a gradient of 10 per cent.
Barring disaster, Thomas is positioned well to take his third overall victory in the race.
Volta ao Algarve 2018, stage four: Almodôvar to Tavira, 199.2km
1. Dylan Groenewegen (Ned) LottoNL-Jumbo, in 4-33-49
2. Matteo Pelucchi (Ita) Bora-Hansgrohe
3. John Degenkolb (Ger) Trek-Segafredo
4. Florian Senechal (Fra) Quick-Step Floors
5. Jurgen Roelandts (Bel) BMC Racing
6. Timothy Dupont (Bel) Wanty-Groupe Gobert
7. Hugo Hofstetter (Fra) Cofidis
8. Jasper De Buyst (Bel) Lotto-Soudal
9. Loïc Vliegen (Bel) BMC Racing
10. Michal Kwiatkowski (Pol) Team Sky, all same time
General classification after stage four
1. Geraint Thomas (GBr) Team Sky, in 14-35-50
2. Michal Kwiatkowski (Pol) Team Sky, at 19 secs
3. Nelson Oliveira (Por) Movistar, at 32 secs
4. Bob Jungels (Lux) Quick-Step Floors, at 52 secs
5. Tejay van Garderen (USA) BMC Racing, at 53 secs
6. Bauke Mollema (Ned) Trek-Segafredo, at 1-01
7. Jaime Roson (Esp) Movistar, at 1-18
8. Felix Großschartner (Aut) Bora-Hansgrohe, at 1-20
9. Vasil Kiryienka (Blr) Team Sky, at 1-24
10. Simon Spilak (Slo) Katusha-Alpecin, at 1-31