Before the match, a minute of silence was dedicated to remember the passing of Fiorentina general manager Joe Barone.
Coach Stefano Pioli had to do without French full-back Theo Hernandez, absent due to suspension, while he preferred to rest American Christian Pulisic, starting Nigerian winger Samuel Chukwueze in his place.
The Rossoneri started with possession, uslng long balls in an attempt to evade the systematic pressing of the home team.
The first big chance was created by the Rossoneri following a beautiful cross by Rafael Leao that Chukwueze headed toward net only to see it blocked by goalkeeper Pietro Terracciano.
Fiorentina then came close to taking the lead. An error during the visitors' setup meant that Jonathan Ikoné was able to serve teammate Andrea Belotti in depth who, from a central position, was unable to do anything other than shoot.
With this action the home team's players found greater conviction in the face of a slight slip from the opposing defence.
Leao and Tijjani Reijnders showed great liveliness on the left side of the pitch, challenging the goalkeeper on two different occasions.
Shortly before the end of the half, Leao made his way down the left flank and served teammate Olivier Giroud, positioned in a central position, but the Frenchman wasted this important opportunity by shooting high.
The second half restarted with a substitution for the Rossoneri with defender Matteo Gabbia entering in place of Malick Thiaw who naively received a yellow card during the first half of the game.
In the 47th minute, AC Milan took the lead behind Ruben Loftus-Cheek. Leao was served deep before making a backheel pass towards the center of the penalty area where his English teammate ran onto the ball a few steps from goal
There wasn't even time to rejoice though as Fiorentina immediately found the equalizer.
A relaunch from the visiting team's defense was controlled by the Viola players and rewarded with the inclusion of midfielder Alfred Duncan who, with his left foot, made a highly precise long-range shot that goalkeeper Mike Maignan could do nothing about.
In turn, in this exciting moment of the match, AC Milan promptly reacted by returning to the attack, retaking the lead in minute 53.
Dutch midfielder Reijnders controlled the ball and passed to Leao who unleashed his impressive speed, easily passing his Nikola Milenkovic and then rounding the onrushing goalkeeper, easily finishing into an empty net.
This time AC Milan did not lose concentration, remaining on the attack, finishing from distance with a shot by Alessandro Florenzi that was blocked for a corner by the attentive goalkeeper.
After the first hour of play, coach Stefano Pioli decided to bring in fresh forces, replacing Leao and Reijnders and bringing in Noah Okafor and Yunus Musah.
These changes did not produce results as the Rossoneri's center of gravity was significantly lowered, making Fiorentina attacks easier.
The most significant of the occasions occurred in the 64th minute when the striker Belotti managed to free himself from the marking of his direct opponent and on a slide made a very treacherous shot that required a smart intervention from Maignan.
Shortly afterwards, a lack of attention by the visiting team's defense could have cost them dearly if it weren't for the fact that Maignan once again proved to be very alert.
The home team continued to attack insistently but the aforementioned French goalkeeper proved to be unbeatable on several occasions.
Pioli tried to remedy the situation by introducing Pulisic and the move turned out to be positive because it allowed the Rossoneri to return to attacking, creating several scoring opportunities.
Pulisic even found the net on the counterattack but the goal was annulled because it was tainted by his starting position being offside at the start of the action.
The home team chased the equalizer but its efforts proved to fin a draw again were useless.
With this victory, AC Milan consolidated its spot in the standings, extending the gap over third-place Juventus FC, its immediate pursuer. For its part, Fiorentina remained stuck in 10th position, far from the positions that would guarantee participation in the next European competitions.