The keeper was a bystander for large parts of the game and could not be blamed for the Cagliari goal. He dealt with the simple things well.
Decent performance from the roaming right-back, who defended solidly and was always looking to get forward to provide width to Milan's attack.
Confident performance from the centre-half being hailed the best defender in Serie A this season. His positioning was solid and he helped build attacking play from the back.
Not a great game from the experienced full-back, who looked sloppy at times. He should have done a better job of stopping Cossu for his goal.
The former Chievo man had a decent game. His aerial threat was beneficial for the home side, as was his willingness to stay on his feet in the challenge.
Energetic performance from the player who has had a slow start to his career in Italy. Had a solid showing, especially linking up well with Robinho down the left.
Kept things simple in midfield, breaking up Cagliari's limited attacks efficiently while distributing the ball well. Replaced at half-time after picking up a knock.
The veteran Dutchman has enjoyed an impressive surge in form recently and continued his good run. Was involved in Milan's first two goals and provided a creative threat throughout.
The tough-tackling midfielder gave a dynamic performance this evening. He was full of running and even bagged a goal. Cagliari struggled to get past him.
The former Real Madrid forward was in brilliant form. He was a constant nuisance to the Cagliari backline and took both goals extremely well. A huge threat to any defence when he plays like this.
- 7 Alexandre Pato
The keeper could not be blamed for any of the four goals and was certainly unlucky for Gattuso's strike. He made some decent stops to keep the scoreline respectable.
Poor performance from the centre-back, who struggled to deal with the fluidity of Milan's attack. Simply outclassed by the likes of Robinho, who often waltzed past him as if he was not there.
The defender had a quiet game and looked a little out of his comfort zone. However, he did nearly bring the score back to 3-2 with a rasping long-range shot before being substituted.
The experienced full-back had a fairly decent game for the away side and was perhaps his team's strongest defender. He got forward when possible, too.
Bad game for the centre-half who afforded Pato too much time in the ball. His positioning was shocking on occasion and he should have attempted to challenge Robinho for Milan's opener.
Not a bad performance by all means, although he did fade as the game went by. Took his goal expertly and showed good skill to beat Zambrotta.
The red-headed midfielder had an average game. His passing was sloppy in the first-half, giving the ball away on several occasions. However, there was a marked improvement in the second period.
Quiet outing for the 24-year-old midfield man who struggled to get close to his Milan counterparts. Lacked the intensity in his game to boss the middle of the park.
The winger has been linked with some of Serie A's bigger clubs in the summer but failed to show why he is sought after. Disappointing performance, making hardly any impact on the game.
The Belgian midfielder was one of Cagliari's better performers this evening. He started brightly, going close with a long range effort and he worked hard.
The striker cut a lonely and frustrated figure upfront. Support was limited for the former Inter youth player, who had to settle for a number of balls into the box and even then, he struggled to create a noteworthy opportunity.
- 1 M. Amelia
- 25 D. Bonera
The midfielder, who looks likely to depart the club at the end of the season for Juventus, came on at half-time and made several world class passes. Still a great playmaker and will surely be missed.
Replaced Gattuso with half hour to go and played well. His passing was accurate and effective.
- 4 M. van Bommel
The legendary Milan striker entered the game late on to rapturous applause after missing the best part of the season through injury. Showed some nice touches during his 10 minutes on the pitch.
- 99 A. Cassano
- 25 I. Pelizzoli
- 28 D. Magliocchetti
Replaced the tiring Perico for the final 10 minutes and and did a fairly decent job, keeping the Milan attack quiet in the final stages.
- 5 D. Conti
Replaced Cossi in injury time but had no time to make an impact.
- 20 S. Laner
Was lively on his introduction into the game, creating two half chances. An improvement on Missiroli.