Sweden international's late, late leveler keep's 10-man hosts' flickering Scudetto hopes alive.
The Swede earned his side a point after Daniele Bonera had been dismissed, but Massimiliano Allegri's men have now handed the advantage to Juventus, which meets Roma's later.
After a well-observed minute's applause for former Italy U21 Piermario Morosini, who tragically died playing for Livorno last weekend, Milan started sharply.
Ibrahimovic caused early problems and forced Rossublu keeper Federico Agliardi into action before winning a free kick that Clarence Seedorf pulled wide.
Soon after the Seedorf-Ibrahimovic combination almost paid dividends, the Dutchman flinging over a cross that the Swede brought down neatly, but side-footed wide from 12 yards out.
With Milan's pressing proving fruitless, the visiting Rossoblu started to show glimpses of attacking threat, Gaston Ramirez squaring across the six-yard box when he could, possibly should, have tested Christian Abbiati in the Milan goal.
Ramirez learned from his mistake seconds later when Alessandro Diamanti robbed Mark Van Bommel near the halfway line and slid through the Uruguayan, who took a great touch before firing low past Abbiati.
Bologna pushed on, particularly the flamboyant Diamanti, who tried an audacious long-range effort from the middle of the park before stinging Abbiati's palms with a free kick.
Milan was a yard off the pace, but nearly scrambled an equalizer, Robinho wriggling free only to see his cross blocked by the visitors' Archimede Morleo, with Antonio Nocerino set to pounce.
However, with halftime approaching, the greater threat was posed by Bologna, which nearly made it 2-0 when Belgian Gaby Mudingayi easily muscled past Bonera and sent a snapshot only a yard wide of Abbiati's upright.
Milan emerged for the second half with its title aspirations on the line and the team started the second period with intent - Seedorf firing an effort straight at Agliardi and Nocerino slicing wide from six yards after some trickery from Robinho.
With goals needed, Rossoneri boss Massimiliano Allegri sent on maverick Antonio Cassano for Seedorf, and the sub was soon involved in controversy. The Italy international released Ibrahimovic whose deft chip over Agliardi crossed the line. The Swede's joy was short-lived, however, as the goal was chalked off for offside - when replays showed he was clearly on.
The home side now had the bit between its teeth and Robinho fired in a blockbuster on the hour mark that was excellently turned away by Agliardi. Cassano was then denied by defensive heroics from Rossoblu stopper Agliardi and Daniele Portanova.
The, with time running out, Ibrahimovic notched an important late strike, meeting Emanuelson's cross to bundle home and snatch a point.
But the draw sees Allegri's men clinging to the hope that Serie A leader Juventus will lose this evening against Roma, and keep their Serie A dreams intact.
Follow GOAL.COM USA on