Napoli's earlier 2-0 win at Bologna had momentarily drawn the southern club level with the 17-time champions.
Milan beat Fiorentina to regain Serie A lead
A header from Milan forward Alexandre Pato set up Clarence Seedorf's goal eight minutes in at Florence's Artemio Franchi stadium, and Pato then finished off a counterattack himself to double Milan's lead in the 41st.
Juan Vargas pulled one back for Fiorentina in the 79th, and nearly equalised three minutes later but shot just wide.
Milan forward Zlatan Ibrahimovic contributed to both goals but was sent off in the 87th, apparently for insulting a linesman.
Earlier, Napoli won despite missing top-scorer Edinson Cavani.
Giuseppe Mascara put Napoli in front in the 30th after Bologna goalkeeper Emiliano Viviano failed to control a backheeled effort from Ezequiel Lavezzi. Marek Hamsik doubled the lead with a penalty just before half time.
Napoli hasn't won Serie A since Diego Maradona led the southern club to the honor in 1987 and 1990. The club fell into financial difficulty and was relegated to the third division in 2004 but new president Aurelio De Laurentiis has made the side a threat again.
"Dreams help us live, whoever dreams lives better," said De Laurentiis, also a noted film producer. "We do it with cinema and now we're doing it with football. Napoli needs to dream."
Elsewhere, Lazio beat Parma 2-0 to move past Udinese and into fourth place, which carries the final Champions League berth.
Hernanes scored in the 23rd minute amid three defenders from beyond the area and Sergio Floccari came off the bench to double the lead in the 77th.
Lazio moved one point in front of Udinese and four in front of Roma, who beat Udinese 2-1 on Saturday.
In the lunchtime fixture, Juventus rallied to beat Genoa 3-2 for their third consecutive win, keeping alive the Turin outfit's faint Champions League hopes.
Luca Toni came off the bench to score the winner in the 83rd against the team he began the season with, fighting off a defender before lifting the ball over the goalkeeper at the edge of the box.
Genoa had gone ahead in the seventh minute following an own goal from Juventus defender Leonardo Bonucci and Simone Pepe equalised for Juve in the 50th.
Genoa then took the lead again with a goal from Antonio Floro Flores in the 57th before Juventus forward Alessandro Matri made it 2-2 in the 63rd.
Juventus still trails Lazio by six points. "This match gives us confidence," Juventus coach Luigi Del Neri said. "We were able to turn around a match that began with an own goal after just a few minutes."
Also, it was: Bari 1, Catania 1; Cagliari 1, Brescia 1; Palermo 2, Cesena 2; and Sampdoria 1, Lecce 2.