The Brit completed the 225km course in 5:54:13, beating Groupama-FDJ’s Thibaut Pinot (France) and teammate Esteban Chaves (Colombia) into second and third place respectively.
A select group led the race from early on when a 15-man bunch – including DiData’s Natnael Berhane – broke away after about 20km.
The group built up a solid eight-minute lead as the race wore on, but at the same time their numbers began to dwindle.
Their lead also shrank as riders continued to fall away. The peloton chased hard with several kilometres to go, with the lead group slowly getting reeled in one-by-one in the closing kilometres.
Androni Giocattoli-Sidermec’s Fausto Masnada (Italy) took a solo lead with less than five kilometres to go, but it was to no avail as the peloton caught him with just 2.7km remaining.
A string of attacks ensued from within the peloton on the final climb. On the last bend leading to the finish, Yates executed a tactical attack, moving to the right as the bend went left. This put him into space and enabled him to surge to victory.
“From the beginning of the stage today we were always thinking that if we kept the break close enough then it might be possible for the stage,” Yates said afterwards.
“Once Astana [Pro Team] showed some interest in the stage then I knew it was possible. You never know deep into the final.”
“That win was one for the boys, the big guys who have been riding on the front all day. They have had a couple of tough days always riding on the front on some long stages.”
Yates has accumulated a general classification time of 37:37:15, 32 seconds clear of teammate Esteban Chaves (Colombia).