The Mitchelton-Scott team leader finished ahead of Nils Politt (Katusha-Alpecin) by seven seconds. Current race leader Michal Kwiatkowski (Sky) was third at 11 seconds.
“I am really happy with my performance, I have been working on my time trial quite a lot the last few years but I didn’t really expect to be fastest today," Yates said.
"At the start of the day, I thought it was for the TT specialists. So especially with how this course was I am very happy.
“It was really straight forward, there weren’t any corners you really needed to brake for, it was just in the skis, so a pretty filthy time trial for a guy of my size.
"The climb in the middle wasn’t real hard, the climb up to the finish line was probably harder so I am really happy with what I did today."
As Kwiatkowski worked to retain his overall lead he was joined on the presumptive final podium by team-mate Egan Bernal who finished sixth but jumped to second overall at 19 seconds. Astana's Luis Leon Sanchez lies in third place at 28 seconds.
"I didn't ride to win the TT but to defend the yellow jersey," Kwiatkowski said. "And that's a satisfaction since I remain the race leader and I even gain some time on all my rivals.
"Now I'm looking forward to the weekend as it's not over even if we're in a good position."
Yates was one of the pre-race favourites coming into the event but lost more than six minutes after being caught in a crosswind split on a difficult second stage. This ITT victory will no doubt be a confidence booster going into his early season focus on the Giro d'Italia.
“The sensations are good for the next days, I knew I had good form, well decent form coming into the race and just got caught out in the crosswinds, it wasn’t from a lack of form or anything," he said.
Friday's sixth stage runs 176.5km through hills just north of the Mediterranean coast between Peynier and Brignoles.