The 2018 Tour de France champ finished fourth on Monday’s 10.1km time trial – clocking 11mins 10 secs – to move up one place to second overall.
But the short and flat course did not give him enough time to overhaul race leader Simon Yates who held on for the GC victory.
Thomas made up 22 seconds on his fellow Brit over the coastal course to finish just 17 secs adrift after the eight stages of the race between the two seas.
But the 34-year-old has shown that he will be a contender when he returns to Italy in a few weeks for his Giro d’Italia bid.
“It was good, it felt like I did a good effort and judged it quite well,” said Thomas.
“You always pick it apart a bit, and obviously I didn’t have another 17 seconds in me, but I definitely feel like I had a bit more in the tank.”
— Geraint Thomas (@GeraintThomas86) September 14, 2020
“It’s really encouraging after eight days of racing, especially after the start of the 2020 season version 2.0. I feel a lot better now and it’s encouraging that I feel I could improve.
“Obviously I never thought it was possible to get 40 seconds in 10km, but i’m happy with how that went. I’m also happy for the Ganna-dier, motoring along, proving to us all why he’s called that.
“It’s just what I needed, eight really hard days of racing, time to rest up now and soak up that work. I feel like I’ve got a bit more to come as well so I’m really looking forward to a good October.”
Thomas stopped the clock 28 secs slower than Team Ineos team-mate Filippo Ganna who took the time trial honours in 10:42.
The Cardiff-born rider ended up 12 secs ahead of Rafal Majka on the GC standings as his rival slipped into third place after clocking 11:45 on the route at San Benedetto del Tronto.
Thomas has gone into the stage 23 secs adrift of Majka and 39 secs down on former Vuelta a Espana champ Yates who will also bid for the Giro crown.
“I had to give it full gas today,” admitted Buty-born Yates, whose twin brother Adam is joining Geraint Thomas’ Team Ineos next year. “Hopefully I can keep this form for the Giro.”
1 – Simon Yates (Mitchelton – Scott)
2 – Geraint Thomas (Team Ineos) at 17″
3 – Rafal Majka (Bora – Hansgrohe) at 29″
4 – Wilco Kelderman (Team Sunweb) at 56″
5 – Aleksandr Vlasov (Astana Pro Team) at 58″