Yates and five other riders, including defending champion Simon Clarke (Cannondale-Drapac), sprung clear from the peloton with just over 15km remaining and having kept the chasers at bay, the Briton was the fastest in the sprint.
Fourth and the best young rider in last year's Tour de France, it is only Yates' fifth professional win in his career: his last victories were in the 2015 Clásica de San Sebastián, and the GP Industria & Artigianato in 2014.
"I tried to give it some welly on the last climb, but I couldn't get away from the other guys so I had to wait for the sprint," the 24-year-old said afterward. "I wasn't lucky but I am not renowned as a sprinter so it's a good win for me."
The one-day race started and finished in Larciano and climbed San Baronto multiple times. A cohesive break struggled to form, but when it did it contained Nils Politt (Katusha-Alpecin), Davide Orrico (Sangemini-MG.Kvis), Adriano Brogi (GM Europa Ovini) and Angelo Raffaele (d’Amico-Utensilnord), building a gap of over seven minutes.
Unlikely to last to the finish, though, Politt distanced the other three before being caught himself at 43km, when Rob Power (Orica-Scott) and Bora-Hansgrohe increased the pressure on the rolling Tuscan roads.
Franco Pellizotti (Bahrain-Merida) clipped off the front soon after, being joined by Davide Ballerini (Androno-Giocattoli), but their lead was short-lived.
On the penultimate climb of San Baronto – where Clarke made his race-winning move last year – a group of five went clear that included the Australian.
Caught, a new group, superior to the last one, formed, and this time Clarke’s company was teammate Rigoberto Uran, Yates, Richard Carapaz (Movistar) and Androni-Giocattoli pair, Egan Bernal and Mattia Cattaneo.
Bahrain Merida headed the chase but the lead group crested the final ascent of San Baronto as one, holding a lead of 23 seconds with seven kilometres remaining.
Benal and Cattaneo both attempted long-distance sprints as the finished line approached, but within the last few hundred metres, it was Carapaz in front. The Ecuadorian had a sizeable lead at one point but Yates came to the right and edged around him to take the win.
GP Industria & Artigianato (199.2km)
1. Adam Yates (Gbr) Orica-Scott in 4-50-00
2. Richard Carapaz (Ecu) Movistar, st
3. Rigoberto Uran (Col) Cannondale-Drapac, st
4. Mattia Cattaneo (Ita) Androno-Giocattoli at 2secs
5. Egan Bernal (Col) Androno-Giocattoli at same time
6. Simon Clarke (Aus) Cannondale-Drapac at 4secs
7. Francesco Gavazzi (Ita) Androno-Giocattoli at 17secs
8. Filippo Pozzato (Ita( Wilier Triestina at 18secs
9. Paolo Totò (Ita) Sangemini-MG.Vis at same time
10. Joaquín José Rojas (Esp) Movistar at 19 secs
Thank you for reading 5 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1