Juve won 2-0 at Atalanta on Saturday and had briefly put daylight between themselves and the rest but Milan’s success closes the gap to a single point.
Udinese are also hanging on in third, three points behind Juve, after their comfortable 2-1 win over Catania, whose consolation came five minutes into time added on.
Milan coach Massimiliano Allegri insisted he was happy with his team’s position at the halfway mark of the season.
“We needed the three points after the three we lost in the derby and that’s what we were concenrated on,” he said.
“We’ve got 40 points which is the same as we had at the same stage last season. Juve have done better, they have one more point but there are 19 matches left.”
Ibrahimovic scored a brace and is now level with Udinese captain Antonio Di Natale at the top of the goalscoring charts.
Unlike the Italian Cup meeting between the pair on Wednesday – which Milan squeaked through 2-1 after extra-time – Novara couldn’t make life particularly difficult for the champions.
Almost all the pressure in the first half was put on the Novara goal but the hosts managed to hold firm.
Ibrahimovic hit a vicious free-kick that Samir Ujkani couldn’t hold but Robinho fired the follow-up from a tight angle across the face of the goal.
The big Swede had another free-kick from a good position that he hit with venom and again it was too hot for Ujkani to handle but the ball spooned up and over the bar.
From the resulting corner Philippe Mexes teed up Thiago Silva but his close range header was miraculously cleared off the line by Andrea Caracciolo.
Allegri wasted little time in trying to inspire his team, throwing on young forward Stephan El Shaarawy at half-time in place of full-back Luca Antonini.
And the hosts cracked just 12 minutes after the re-start as Milan captain Massimo Ambrosini picked out Ibrahimovic at the back post with a short, dinked cross.
The Sweden forward had lost his marker and had time to control the ball on his thigh before volleying past Ujkani.
El Shaarawy should have sealed the points 20 minutes from time when played in by Robinho but having skipped around Ujkani he sliced his finish wide.
But moments later Robinho slid in at the back post to divert in El Shaarawy’s shot that appeared to be going wide.
And the coup de grace came from Ibrahimovic in the final minute with a clever flick that fooled Ujkani and three defenders before trickling over the line.