Team Sky’s Chris Froome is 75 seconds down on compatriot Yates in 33rd place.

Yates said: “On the final climb I knew Richie was coming across, so I didn’t want to keep pushing as I knew that when he caught me I would be empty, so I took a bit easy and waited for him to get to me.

“I managed to get him in front into the final kilometre and I think that really saved me as the wind was quite strong in the finish. I am just really happy that I was able to come around him and take the victory.”

The six-day, five-stage race – an early indicator of form before the Tour de France in July – ends with the 17.9km individual time trial in Lausanne on Sunday.

Meanwhile, Italian rider Gianni Moscon is facing disciplinary action from Team Sky after it emerged he used racially abusive language towards FDJ’s Kevin Reza at the end of Friday’s stage three.

Team Sky chose not to withdraw Moscon from the race following discussions with FDJ. Moscon has apologised to Frenchman Reza and his team-mates but the British team will consider what action to take after establishing all of the facts of the incident.