The Welshman finished in fourth place behind stage winner Primož Roglič (LottoNL-Jumbo) to secure his place at the top of the general classification.
Roglič had attacked on the tricky final climb to Trevi to distance his rivals and take a solo win. Adam Yates (Mitchelton-Scott) chased him in for second place, with Tiesj Benoot (Lotto-Soudal) in third.
How it happened
Very soon after the start in Follonica, a group of five riders attacked from the peloton to form up the day's escape group. King of the mountains Nicola Bagioli (Nippo-Vini Fantini) joined Jacopo Mosca (Wilier-Selle Italia), Sho Hatsuyama (Nippo-Vini Fantini), Stepan Kurianov (Gazprom-Rusvelo) and Dennis van Winden (Israel Cycling Academy).
The quintet were allowed quite a lot of freedom by the peloton initially, building up a lead of over nine minutes with the first 50km.
By the half-way point on the race's longest stage – measuring 234km – the gap had been reduced slightly to seven and a half minutes.
BMC Racing did much of the work in leading the bunch, with race leader Patrick Bevin - not a man for these sorts of finishes - happy to sit on the front for his team-mates.
Bevin was one of those caught up in several crashes during the stage. Although the New Zealander remounted and got back onto the bunch, other riders were forced to abandon, including Simon Geschke (Team Sunweb).
There was just Van Winden and Bagioli left in the lead with 12.5km to go, but then Van Winden got dropped to leave Bagioli to crest the penultimate climb solo. Bagioli was subsequently caught shortly after by the peloton with Edoardo Zardini (Wilier-Selle Italia) almost simultaneously launching an attack off the front in a short-lived move.
Team Sky took to the front of the bunch, with Michal Kwiatkowski putting in some big turns to up the pace on the hilly finishing loop and see a large number of riders dropped.
Roglič attacked off the front of the peloton going into the final kilometre, which appeared to catch Sky off-guard.
Roglič rapidly opened up a significant gap with no-one wanting to instigate the chase. The increase in speed of the bunch on the climb meant that Peter Sagan (Bora-Hansgrohe) was one of those dropped.
Yates looked to be the only rider capable to attempting to chase Roglič down into the steep final 500 metres, but he could not catch him. Strade Bianche winner Tiesj Benoot put in an impressive climbing performance to secure third, with Thomas in fourth.
The 2018 edition of Tirreno-Adriatico continues on Saturday with stage four, arguably the toughest of the race with a long climb to the finish in Sarnano Sassotetto that should provide a battleground for the GC riders. The race concludes on Tuesday, March 13.
Tirreno-Adriatico 2018, stage three: Follonica to Trevi, 234km
1. Primož Roglič (Slo) LottoNL-Jumbo, in 6-17-23
2. Adam Yates (GBr) Mitchelton-Scott, at 3 secs
3. Tiesj Benoot (Bel) Lotto-Soudal, at 6 secs
4. Geraint Thomas (GBr) Team Sky, at 7 secs
5. Rigoberto Uran (Col) EF Education First-Drapac, at 10 secs
6. Mikel Landa (Esp) Movistar
7. Gianni Moscon (Ita) Team Sky
8. Romain Bardet (Fra) Ag2r La Mondiale
9. Wilco Kelderman (Ned) Team Sunweb
10. Bob Jungels (Lux) Quick-Step Floors, all at same time
General classification after stage three
1. Geraint Thomas (GBr) Team Sky, in 10-52-22
2. Greg Van Avermaet (Bel) BMC Racing, at same time
3. Chris Froome (GBr) Team Sky, at 3 secs
4. Damiano Caruso (Ita) BMC Racing, at 8 secs
5. Michal Kwiatkowski (Pol) Team Sky, at 9 secs
6. Bob Jungels (Lux) Quick-Step Floors, at same time
7. Wilco Kelderman (Ned) Team Sunweb, at 19 secs
8. Davide Formolo (Ita) Bora-Hansgrohe, at 30 secs
9. Tom Dumoulin (Ned) Team Sunweb, at 33 secs
10. Rigoberto Uran (Col) EF Education First-Drapac, at 39 secs
Thank you for reading 20 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1