Milan moved five points clear of Internazionale in second place, whilst leaders Juventus were held at home by Roma in Serie A as their lead was cut to eight points.
Carlo Ancelotti's Rossoneri began the day just two points ahead of their city rivals in what was a high-profile Saturday for the Italian top flight with the top five all playing.
However a 3-1 win over fourth placed Fiorentina enabled them to take advantage of Internazionale's early defeat at the hands of Parma.
Viola took the lead at San Siro through the prolific Luca Toni (12), but Milan's own hot-shot Andrei Shevchenko levelled matters just eight minutes later.
Brazilian schemer Kaka opened up a lead for the home side when he scored after 47 minutes, and midfielder Gennaro Gattuso made sure of the three points with half an hour to go.
League leaders Juventus saw their lead cut to eight points as they could only draw 1-1 with Roma whilst Milan triumphed.
The Bianconeri also lost Alessandro Del Piero to injury at Stadio Delle Alpi as they prepared for the UEFA Champions League quarter final against Arsenal with a draw against The Giallorossi.
Fabio Capello's men had taken the lead through Brazilian midfielder Emerson (35), but they lost Czech star Pavel Nedved to two bookable offences on 45 minutes.
Roma took advantage of their numerical supremacy and grabbed a share of the spoils to move one point behind Fiorentina when Houssine Kharja scored with just five minutes to go.
Internazionale slipped up in the race for second place as they fell to a 1-0 defeat to Parma at Stadio Ennio Tardini.
Fabio Simplicio scored the winner for the home side when he netted on 39 minutes to lift Parma into the top half of the table.