The Astana rider completed the route, which started in Frontenex, in a time of 3:34:11.
An 18.3km team time trial in Frauenfeld also took place today to mark the start of the Tour de Suisse, another World Tour event.
View more results below.
"I was always thinking of the next stage, the next climb and it's an fantastic feeling [to win] and I think it will really start to sink in tonight". It's a massive race and it's an incredible feeling. "I'm more anxious about my form for the Tour de France". I get to ride the races I want and I am a leader in a lot of them.
"It's been two back-to-back hard stages", he added.
It gave them a 19 second lead over Team Sunweb and a 27 second advantage over Quick-Step Floors.
A late flurry saw him claim third on the day, nine seconds behind Yates, and third overall but Thomas crossed the line ten seconds later to earn the second UCI WorldTour stage race win of his career after Paris-Nice 2016.
"It's not a great situation for him, the team or just cycling in general", Thomas said.
Thomas took overall honours by 1:00 from Yates with Bardet 1:47 back in this tune-up for the Tour de France, which gets under way on July 7.
Adam Yates was extremely happy to win the stage after a hard week of racing.
Having been the last man standing in support of Thomas, meanwhile, Tao Geoghegan Hart climbed to 13th overall to follow his fifth place in support of Egan Arley Bernal's Amgen Tour of California win last month.