Ibrahimovic missed a gilt-edged chance to give the hosts the lead before Gaston Ramirez finished off a lightning break to give the Rossoblu the advantage at the interval.
Milan dominated possession for the majority of the second period and should have been level when Ibrahimovic lifted the ball over goalkeeper Federico Agliardi, only to be wrongly adjudged offside.
As their pursuit of at least a draw became more ragged, Daniele Bonera received a second yellow card for a late challenge.
But, just as it looked like the hosts were to drop three points, Ibrahimovic volleyed a stoppage-time equaliser to ensure a share of the spoils that moved Milan briefly level on points with Juventus at the top of the table before the Bianconeri beat Roma 4-0 in the late kick-off.
Having relinquished their place at the top of the table a little over two weeks ago following a surprise loss to Fiorentina, the Rossoneri needed a victory against 12th-placed Bologna to reignite their title push.
With the meanest home defence in the division, Massimiliano Allegri’s side were confident of a result as they welcomed Alberto Aquilani and Massimo Ambrosini back into the fold following suspension.
Their visitors were dealt a blow in the week when goalkeeper Jean Francois Gillet was ruled out for three weeks with a thigh injury, and his replacement Agliardi was called into almost immediate action when Ibrahimovic stung his palms from outside the box with five minutes gone.
And the Rossoneri should have had the lead with 15 minutes on the clock when Ibrahimovic took down a Clarence Seedorf cross to the back post, but, with the goal at his mercy, he contrived to poke the ball the wrong side of the post.
Bologna executed an exquisite counter-attack to take the lead on 26 minutes when Alessandro Diamanti found Gaston Ramirez and he prodded past Christian Abbiati.
Robinho and Ibrahimovic had half chances early in the second half but both snatched at their efforts as Milan began to crank up the pressure. The introduction of Antonio Cassano further intensified the pressure on the visitors' defence.
Milan should have been level on the hour mark when Ibrahimovic sprung the offside trap and exquisitely lifted the ball over Agliardi but he was incorrectly ruled offside.
And as the Rossoneri's desperation for a goal grew, the quality of their play worsened.
When Bonera was sent off it looked as though Milan's title push would be dealt a fatal blow by another home defeat - but Ibrahimovic fired a warning shot with an overhead kick that flew just wide before dispatching Urby Emanuelson's back-post cross to set up a barnstorming finish.
Despite considerable effort in stoppage time, Milan could not force the win.