Katusha's Ilnur Zakarin battled back following an early crash to claim second place with Geraint Thomas (Team Sky) grabbing third place after outsprinting Thibaut Pinot (FDJ) at the line.
Polanc, whose only other Giro win was a mountain stage in 2015, was part of a leading quartet that broke away early on and he gradually outmuscled his rivals.
The chasing riders later ate into his shrinking lead, which was below two minutes with less than 7 kilometres to run, but he held on for victory.
Bob Jungels (QuickStep Floors) took over as overall race leader, six seconds ahead of Thomas. Orica's Adam Yates is third. Defending champion Vincenzo Nibali is fourth.
(Reporting by Karolos Grohmann; editing by Richard Lough)
Share
