Milan kept pace with Juve after frontmen Antonio Cassano and Ibrahimovic struck in three first half minutes to defeat Siena.
Cassano swept home on 26 minutes after home goalkeeper Zeljko Brkic could only parry an Ibrahimovic strike before the Swede struck with a left-foot blast to double the lead on 29 minutes after being played in by his Italian strike partner.
Substitute Erjon Bogdani pulled a goal back for the home side with seven minutes to play but Antonio Nocerino made the game safe for Milan with a last-minute strike with Ibrahimovic plundering his 26th Serie A goal of the campaign in stoppage time.
Juventus however remained on course for their first Serie A crown in nine seasons after crushing relegation-threatened Novara 4-0 on Sunday.
A brace from Mirko Vucinic, and goals from Marco Borriello and Arturo Vidal, helped unbeaten Juventus record their eighth success in a row to reach 77 points with three matches left.
The Bianconeri, who have a better head-to-head record against Milan, who remain three points adrift, could clinch the title as early as Wednesday should they defeat Lecce and Milan lose to Atalanta.