A wonderful Ibrahimovic finish and a fortuitous Rafael Leao strike took the Rossoneri past their opponents and got them their first victory in four games.
As a result, Milan move eighth in the Serie A table, just four points behind Cagliari, who were condemned to their fourth straight Serie A defeat.
The home side looked to get the ball into the box on several occasions in the opening 45 minutes to add to their tally of eight goals from crosses in Serie A, thus far this season. Both Luca Pellegrini and Paolo Farago delivered from wide on several occasions but to no avail.
The Rossoneri twice came close through Leao in the space of a minute, most notably when he slid in at the far post to turn a Hakan Calhanoglu corner agonisingly wide, as Robin Olsen looked on helplessly in the Cagliari goal.
The Casteddu almost went ahead with a potential goal-of-the-season contender from Nahitan Nandez when the midfielder attempted an audacious first-time lob from outside the area with Gianluigi Donnarumma a long way off his line, but the Milan keeper managed to get back just in time to claw the ball away.
Milan took an immediate second half lead through Leao, the Portuguese forward brought down a Samu Castillejo freekick, before his deflected effort looped over Olsen who was left haplessly flapping at thin air in the Cagliari goal.
Giovanni Simeone did his best Ibrahimovic impression, but his overhead kick sailed narrowly wide after Nainggolan’s flicked through ball as the home side looked for an equaliser, but Cagliari struggled to recreate the free-flowing football that served them well earlier in the season.
Stefano Pioli’s side doubled their lead via a fantastic left-footed strike from Ibrahimovic, the ball nestling in the bottom corner after the Swede had controlled a Theo Hernandez cross before brilliantly placing past Olsen.
Ibrahimovic thought he’s bagged his second of the game but his goal was ruled out for offside as he stood, arms aloft in celebration.
Cagliari looked for a way back into the game but were left frustrated as Milan sat back to soak up the pressure, without being troubled too much as they ran out comfortable winners.