AC Milan kept their slim Scudetto hopes alive as they edged Fiorentina 3-2 in a thrilling Serie A encounter in Florence on Sunday afternoon.
Milan took the lead after just nine minutes with Zlatan Ibrahimovic latching onto a ball over the top to send his 15th goal of the season bobbling home. However, that lead laster fewer than ten minutes; Erick Pulgar curled home a wonderful free kick to equalise despite Gianluigi Donnarumma's strong hand.
The timeless Franck Ribery turned the game on its head early in the second half for the Viola, finishing inside the penalty area to complete a neat move. Once again it wouldn't take long for an equaliser to come, with Brahim Diaz popping up at the back stick to fire the Rossoneri level six minutes later.
Milan continued to impose themselves and snatched a winner with little over 15 minutes remaining as Hakan Calhanoglu fired an accurate shot through a crowd, across the goalkeeper and into the bottom corner. Perfection.
Let's get into your Rossoneri player ratings...
AC MILAN PLAYER RATINGS
1. Goalkeeper & defenders
Gianluigi Donnarumma (GK) - 5/10 - Perhaps could have done better with Pulgar's free kick, but it was a wonderful hit. Also helpless as the Viola hit the bar in the first half. Again, not much he could do as Ribery planted Fiorentina's second beyond him.
Diogo Dalot (RB) - 5/10 - Fairly quiet game apart from conceding a couple of free kicks on his flank.
Simon Kjaer (CB) - 8/10 - Lovely long-ball assist for Ibrahimovic's opener. Lost Dusan Vlahovic who laid on the second, but remarkably popped up in the opposition penalty area to nab a headed second assist for Diaz to level.
Fikayo Tomori (CB) - 7/10 - Smooth in possession again. Not much he could do about the goals. Brilliantly proactive defending to win the ball high up the pitch in the buildup to Calhanoglu's winner. Made a couple of fine late headed clearances
Theo Hernandez (LB) - 6/10 - Typically attacking and industrious down the left. Should have done more to stop the cross that led to Ribery's strike. Missed a gilt-edged chance to give Milan the lead midway through the second half.
Sandro Tonali (DM) - 5/10 - Struggled to impose himself in the first half and was made to work by the busy Ribery. Hooked for Ismael Bennacer early in the second period.
Franck Kessie (DM) - 7/10 - Neat in possession, although sloppy in his own danger area once or twice in the first half. His desperate lunge wasn't enough to stop the hosts taking the lead, but made amends by calmly teeing up the winner.
Hakan Calhanoglu (AM) - 7/10 - Looked classy as ever on the ball. Fired just wide from range in the first half. Booked for petulance before the break. Shifted out to the left and produced a wonderfully precise winner into the bottom corner.
Alexis Saelemaekers (RW) - 5/10 - Got through a lot of running but had a very quiet game in truth. Replaced by Samu Castillejo after the break
Zlatan Ibrahimovic (ST) - 8/10 - Typically central to everything for Milan in the first period, scoring and striking the woodwork. Beat the offside trap to coolly finish with his left foot early on. Hit the bar again with a strange, looping effort after the break.
Brahim Diaz (LW) - 7/10 - Lucky to escape a first-half penalty claim after struggling against the wily Ribery. Had been quiet before sneaking in at the back stick to fire Milan level for a second time.
Ismael Bennacer (DM) - 7/10 - Far more proactive than Tonali following his introduction on his return from injury.
Samu Castillejo (RW) - 6/10 - Busy down the right flank after his introduction.
Rade Krunic (LW) - N/A
Soualiho Meite (DM) - N/A