Thomas finished 60 seconds ahead of nearest rival Adam Yates, victor of the final stage, with an overall time of 24 hours, 43 minutes and 12 seconds.
Thomas held off Briton Adam Yates, victor of the concluding seventh stage, with France's Romain Bardet taking third in the overall standings.
Thomas managed to close the gap on the peloton within 15km, but was far from happy with the conduct of AG2R as he informed Romain Bardet when he caught up with the French rider. Now I realise I've won a massive race.
The race is a good indicator of form heading into the Tour de France, which takes place from 7-29 July.
"I think these four days are the hardest four days I've raced in a one-week stage race", said Thomas.More news: Trump adviser apologises for saying Trudeau has ‘a place in hell’
More news: What The North Korean Summit Means For Missile Defense In Hawaii
More news: 'We have a deal,' Greece says on decades-old Macedonian name dispute
"I knew I had about one minute 20 seconds to lose on Yatesy so at 200 (metres) to go, when they started sprinting for the win, I was relieved", Thomas was quoted as saying by the BBC.
Yates said: "The Tour de France has been my main goal for the whole season".
Geraint Thomas (GBR) Team Sky +19 6.
"I made a good recovery though and I'm in good shape, ready for the next training block ahead of the Tour". Dan Martin (IRL/EAU) 23, 4. Emanuel Buchmann (GER/BOR) 14, 5.
Yates' victory was his second on the WorldTour this season, after also winning a stage at Tirreno-Adriatico, as he powered clear of Thomas and Romain Bardet (Ag2r-La Mondiale) in the final 200m. Pierre Rolland (FRA) Team EF Education First - +41 Drapac p/b Cannondale Overall leaders 1. Pierre Latour (FRA/ALM) 3:49, 10.