The Sweden striker scored a header and well-taken finish either side of a Francesco Caputo penalty for Sassuolo, as the Rossoneri leapfrogged Roma and Napoli into fifth.
Mehdi Bourabia was dismissed for the hosts in first half stoppage time for a second bookable offence, as Sassuolo struggled to find an equaliser with their numerical disadvantage.
Sassuolo started brightly and stretched Milan from the off, with Mert Muldur overlapping on the right to break the byline and cut back, but Simon Kjaer cleared before Caputo could tap in.
Similarly, Domenico Berardi pounced on a loose ball to weave his way into the box, but his strike was deflected past the post, whilst Manuel Locatelli sent an effort wide from range against his former club.
At the other end, Ibrahimovic bent a freekick over the crossbar, whilst Ante Rebic saw a low shot easily saved by Andrea Consigli.
However, sloppiness proved to be Sassuolo’s undoing as mistakes crept in. After earning a freekick on the edge of his own box, Federico Peluso immediately gave the ball away to Franck Kessie, who in turn moved it on to Calhanoglu. The Turkey star whipped a delightful cross in for Ibrahimovic to nod in from close range and put Milan ahead.
With half an hour gone the Swede almost doubled his tally as he met Ismael Bennacer’s delivery at the back post, but headed straight at Consigli.
Shortly before half time Sassuolo were handed a lifeline, as Calhanoglu handled whilst clearing a dangerous Rogerio freekick. A lengthy VAR check saw a penalty awarded, and Caputo made no mistake from the spot with a well-taken strike.
Yet in stoppage time Ibrahimovic restored Milan’s lead, latching onto a clever Calhanoglu through ball to round Consigli and stroke home.
In the dying seconds of the first period Sassuolo’s task was made all the more difficult, as Bourabia clumsily slid in on Rebic to receive a second yellow card.
Milan started the second half brightly but struggled to carve out an opening against a compact Sassuolo defence. At the other end Caputo raced clear and forced a good stop from Gianluigi Donnarumma, but had strayed offside in the build up.
On the hour mark Ibrahimovic looked set to secure his hattrick from a fine Davide Calabria cut back, but a wonderfully timed Peluso tackle robbed the ball before the striker could finish.
The centre-back was on hand to provide a last ditch tackle as Calhanoglu found space in the box, with Sassuolo becoming increasingly desperate at the back. Moments later it ought to have been 3-1, but Ibrahimovic was unable to get a clean connection after a one-two with Kessie.
Milan were beginning to dominate and after a quick interchange on the edge of the box, Kessie teed up Bennacer, only for the midfielder to hit the outside of the post.
The Rossoneri piled the pressure on late on, with Consigli springing into action to keep out Kessie, before twice making reflex blocks on Giacomo Bonaventura’s follow up efforts. Ultimately, neither side could break through and Milan sealed their victory.