Ecuadorean Olympic champion Richard Carapaz (Ineos) donned the leader’s pink jersey after this long 147km stage that left huge gaps.
Yates, already winner of the second stage of trials in Hungary, achieved his sixth success in the Giro.
The Briton (29) lost his place in the standings last Sunday at Blockhouse. The 2018 Vuelta winner then focused on stage wins.
On the line, Yates beat three rebounding attackers by about fifteen seconds. Australian Jay Hindley came in second, ahead of Carapaz and veteran Italian Vincenzo Nibali (37).
Spaniard Juan Pedro Lopez, who has been leading the rankings since stage four at Etna, lost more than four minutes.
Lopez left the penultimate ascent, on an attack from Carabaz that brought 28 kilometers from the finish. The Ecuadoreans then settled and were joined on the last ascent by Hindley and Nibali, then Yates.
The race began to take shape on the first of two climbs of Soberga, the hill overlooking Turin, about 80 kilometers from the finish. Under the momentum of the Bora team (especially Kieldermann), the riders advanced in the general classification with the exception of Portugal’s Joao Almeida, who ended up making a comeback, France’s Guillaume Martin and Spain’s Alejandro Valverde.
In the provisional general classification, Carapaz now leads Hindley by seven seconds and Almeida by 30 seconds. Spaniard Mikel Landa is fourth, 59 seconds behind.
Carapaz, 28, won the 2019 Giro while racing for Team Movistar. He climbed to the podium at the Tour de France (third) last year before winning the Olympic title at the Tokyo Olympics.
On Sunday, the fifteenth stage arrives at an altitude of (1611 m) in the Aosta Valley. The 177-kilometre route includes two Class I classes before the final climb, classified as Class 2, up to Cogne.