His bursts from his line defined the match. He was too easily rounded by Robinho in build-up to opening goal, saw the ball lifted over him by Ibrahimovic at second goal, and was easily rounded by Robinho on another occasion. Got it right when he saved at feet of Pato late on. Was sound in other aspects of his goalkeeping, though.
Was reasonably solid before he was replaced by Perico in the 62nd minute, but he was sucked out to meet Robinho and beaten to header as Ibrahimovic nipped into space behind him to net second goal.
An energetic display from the left-back, who took every opportunity to support the attack down the left. Tested Abbiati with low drive in 87th minute, and earlier put over dangerous cross which would have resulted in goal but for superb Thiago Silva positioning.
Another Cagliari defender who failed to cover himself in glory. Was rounded, along with Agazzi, at opening goal, beaten easily by Aquilani in build-up to his chance and failed to cover when Ibrahimovic nipped in behind when Ariauado pushed out to neet Robinho.
Although he could do little to prevent his own goal with Nocerino bearing down on him, he had a poor match besides this. Sloppy on the ball, often poor positionally and easily beaten by Robinho. Silly offside when he advanced summed up his night.
The Belgium international was a real driving force for Cagliari as he dovetailed neatly with Cossu. Was more direct than his team-mate, though, looking to take a shot at goal at every opportunity. Went closest with 59th-minute drive which forced Abbiati to save.
The Cagliari playmaker was a real bundle of energy in the midfield. Constantly looked to get on the ball and hurt Milan - and with more lethal strikers, he would have been able to provide them the ammunition needed. His frustration began to show towards the end.
The Swede forced Abbiati into his only real save of the night with a powerful, swerving drive, but took on the unglamorous job of sitting in midfield as Thiago Riberio, Cossu and Nainggolan swarmed forward.
Was an intermittent threat for the islanders. Struck the post with an angled drive in opening minutes, and put over an excellent cross which Ibarbo should have done better with, but floated in and out of the game at times.
The Colombian worked hard up front, and troubled Milan with his movement on occasions, but he never looked likely to score, heading an excellent chance straight at Abbiati in 53rd minute.
Like Ibarbo, never posed much of a threat to Milan backline, demonstrated by him having only one real chance, which he headed wide, despite his side's attacking dominance in first half. Was also booked for late tackle in Aquilani.
Experienced goalkeeper returned to starting line-up after a five-game absence, and will be pleased with clean sheet. Made one impressive save to thwart Ekdal, and a several straightforward stops, to preserve his side's lead.
Had a few shaky moments early on, including a skewed clearance in his own box, but recovered to help keep Cagliari strikers under control. He could have been punished when he lost Ibarbo in 53rd minute.
Left-back put in a no-nonsense display. Cleared his lines with no ceremony, which was effective and necessary on a wet and windy night in Sardinia.
The Brazilian was his unflappable self as he put in an assured defensive display. Made his usual combination of well-timed tackles, important headed clearances and clinical interceptions. His excellent positional sense was demonstrated in 72nd minute when he cleared low Agostini cross at near post.
Can often be a weak link for Milan, but was sound at right-back, combining attacking drive - although his delivery left a lot to be desired - with defensive efficiency. One standing tackle to bring Nainggolan run to shuddering halt in 31st minute was particularly impressive.
Captain was an important presence at the heart of midfield. Popped up in key positions in front of his defence to nip attacks in the bud, filled in for Bonera at right-back on occasions, and started the move which led to second goal.
Not known for a physical approach, but got stuck in and was involved in a midfield tussle with Cossu, from which he was lucky to escape without a booking. Also had an excellent chance to extend his side's lead early in the second half, but finish didn't match his excellent dribble before hand as he fired straight at Agazzi.
His presence was key in Pisano forcing Robinho cross over the line early on, as the defender could not afford to let the ball go past himself with the midfielder driving in. Was calm in possession and helped his side control second half.
A quiet night for the Ghanaian who seemed to struggle on the slippy surface. Did little of note over the 90 minutes.
Like Boateng, the Brazilian struggled with the surface on occasion, but he did provide two assists with low cross for the first and headed knock down for second. Should have squared instead of firing into side-netting in 58th minute.
The Swede was languid for much of the match, but exploded into life when it mattered. Released Robinho with intelligent pass, scored second with well-taken finish, and almost created third for Pato. Was a menace whenever he wanted to be.