AC Milan coach Stefano Pioli fielded the same typical lineup as in the last few matches, except for the absence of Dutch midfielder Tijjani Reijnders, out through suspension and replaced by Ismael Bennacer.
SSC Napoli showed up with a rather defensive formation, using three central defenders, as well as still being forced to do without their offensive leader, striker Victor Osimhen involved in the African Cup of Nations final with the Nigerian national team.
The first minutes of the first half were characterized by both teams feeling out their opponent. Both teams were cautious but maintained a good pace featuring good midfield duels.
The first dangerous opportunity was brought about by an individual initiative by Khvicha Kvaratskhelia who put the ball in the center of the penalty area where teammate Giovanni Simeone wasted it by finishing wide, even though he was in a very favorable position.
Then, AC Milan took the lead. In the 25th minute, fullback Theo Hernandez was served by an illuminating pass from the Portuguese ace Rafael Leao, and found himself in front of goalkeeper Pierluigi Gollini. Hernandez beat him with a precise touch from the left.
A few minutes later it was Rafael Leao who just missed with a curling shot from distance which required a save from the opposing goalkeeper.
After the initial balance it seemed that the Rossoneri had taken control of the match. However no further dangerous action was created to come close to doubling the score.
Meanwhile, a muscle strain forced AC Milan captain Davide Calabria to leave the pitch. Alessandro Florenzi took his place
In the second half, the visiting team returned to the pitch with a new tactical approach. Coach Walter Mazzarri removed a defender to insert attacking winger Matteo Politano who has victimized AC Milan in the past, scoring 5 goals against them.
For its part, AC Milan has significantly lowered its center of gravity, preferring to wait and then recover by focusing on the offensive breaks of its rapid wingers, Rafael Leao on one side and Christian Pulisic on the other.
In the 48th minute, AC Milan came close to scoring a second goal with a long-range shot from Alessandro Florenzi which was slightly deflected, making it more difficult for the SSC Napoli goalkeeper to save, but he collected his own rebound.
After the danger, the Azzurri tried to bring more offensive pressure, both by increasing their presence in the offensive third of the pitch and by raising the pace of their own game.
SSC Napoli's tactical change shortly afterwards demonstrated a real shock, so much so that it was Matteo Politano himself who came close to scoring the equalizer with his classic play, a curling shot that ended up just outside the goal post defended by French Mike Maignan.
Subsequently, an unexpected error in the setup phase committed by Ismael Bennacer favored the advance of Giovanni Simeone who did not wait for his teammates to arrive and selfishly attempted a mid-range shot that was never close.
Around the 70th minute, AC Milan came very close to scoring with Rafael Leao who, served by substitute Yunus Musah, took center stage and took a treacherous shot that just missed the far post.
In the final minutes of the match, the Rossoneri appeared to be in obvious trouble due to the constant siege of the visiting team. In particular, in the 89th minute, the newly introduced Rossoneri defender Jan-Carlo Simic risked causing a mess. In fact, in an attempt to deflect the opponent's cross he ended up hitting his own post but without the ball crossing the goal line.
Nonetheless, the Rossoneri defense held up until the end.
With the win, AC Milan consolidated its spot in third place while for Napoli the objective of fourth place for access to the next UEFA Champions League was further distanced.