Richie Porte (BMC) hauled in a 19-second deficit to beat Simon Yates (Orica-Scott) for the title after the 18.3km time trial in Lausanne.
The stage was won by Primoz Roglic (LottoNL-Jumbo), who set the only time under 25 minutes (24min 58sec) before Porte engaged in battle with Yates, who eventually finished 12th.
Porte's BMC team-mate Tejay van Garderen finished third at 34sec behind Roglic.
Yates and Porte broke clear of the field on Saturday's queen stage and the final-day time trial for the title developed into a two-way battle.
Porte reeled in Yates's time and then extended his lead by a further 21 seconds in the battle against the clock. Roglic finished third overall in the general classification.
"It's a massive shock, to be honest," Porte said. "I didn't think I'd be able to claw that much time back. I tip my hat to my teammates for all the work they've done this week.
"Also Yates, he's a super talent, he rolled me yesterday in the stage so it was sweet to get the victory today. He won the battle but I won the war a little bit there."
Porte said the measured Romandie victory is a boost of confidence as he looks forward to the Tour de France Grand Depart in Dusseldorf.
"100 per cent. The team has backed me to the hilt this year," he said. "They have built a team around me, they have put no pressure on me, and it is just going so well right now. I am really happy with where I am at the moment."