The maglia rosa from Britain crossed the line in 4:37:56 after 176km of racing from Tolmezzo. He was followed 41 seconds later by Columbian Miguel Angel Lopez (Astana) and Dutchman Tom Dumoulin (Sunweb).
Yesterday’s winner atop the Monte Zoncolan, Chris Froome (Sky), was the big loser of the day, conceding just over 90 seconds.
Yates went clear with five other riders on the second last climb about 20km from home before attacking halfway up to leave his fellow escapees behind.
Yates said the going was difficult from the bottom of the climb, but that he still felt good. “I chose my moment to go. They responded the first time, but then I tried again and I used everything to get away.”
He added that he did not know why he was slightly emotional after today’s race, but said it was perhaps because he had given his all to win.
Dumoulin, who was part of the five riders chasing Yates, was dropped with four kilometres to go after a surge by Carapaz and was forced to dig deep as he tried to limit his losses to Yates in front and Froome behind.
A determined time-trial effort saw him catching the group in the final few hundred metres to finish on the podium.
Yates now leads the general classification after 65:57:37 in the saddle, followed by Dumoulin at 2:11 and Pozzovivo at 2:28. Froome drops to sevent overall and is now 4:52 behind.
The Mitchelton-Scott race leader said he now had a good gap over Dumoulin but believed it could change in the upcoming 34.2km time-trial from Trento to Rovereto on Tuesday.