The Bora-Hansgrohe rider took the stage with Danny van Poppel (LottoNL-Jumbo) and Italian Niccolo Bonifazio (Bahrain-Merida) taking out the minor placings.
The peloton split in the rain 30 kilometres from the finish line which caught out Quick-Step Floors' Elia Viviani.
Bahrain-Merida's Matej Mohoric and Movistar rider Carlos Betancur then etched a brief advantage before being reeled in by the pack, with Bennett safely with his Bora-Hansgrohe teammates in the main group, neither had the answer to the Irishman's power.
"It was a tough final for a bunch sprint," said Bennett, who opened up his sprint 400 metres out.
"There were two guys up front. I didn't know how much energy they had left so I went early because I didn't want to let the stage get away from me.
"I didn't know if I would hold the lead. It worked to my advantage ... I just had to do my sprint. I think it's a nicer win than the first one."
Englishman Simon Yates is still in the overall lead, staying 47 seconds ahead of defending champion Tom Dumoulin.
"I guess these were favourable weather conditions for an Englishman. And also for an Irishman," Yates quipped. "It was a very difficult final. I think a few guys underestimated it, myself included."
Stage 13 is another stage for the sprinters, 180 kilometres from Ferrara to Nervesa della Battaglia.