Seedorf and Ibrahimovic had the Rossoneri in front after Di Vaio's opener, but they were denied the points by an equaliser that keeper Marco Amelia allowed through his grasp
Massimiliano Allegri's men had fought back from going behind to a Marco Di Vaio goal early on to lead through a Clarence Seedorf thunderbolt and Zlatan Ibrahimovic penalty. But Alessandro Diamanti equalised for the hosts, and neither side could find a winning goal in a frantic closing spell.
The visitors almost took the lead within the first three minutes of the match, when Ibrahimovic struck a trademark free kick with venom, only for his effort to smash back off Jean-Francois Gillet's crossbar, with the keeper beaten all ends up.
Bologna survived, and then proceeded to stun the champions by opening the scoring on 11 minutes through the evergreen Di Vaio. The forward sprung Milan's poorly-executed offside trap and as Marco Amelia approached, lobbed the ball over the keeper and into the empty net.
Milan, however, hit back just six minutes later thanks to an impressive strike from Seedorf. The Dutchman collected the ball on the edge of the area following neat build-up play from Kevin-Prince Boateng, and his shot curled into the top corner, leaving Gillet to grasp at thin air.
Gillet then denied Ignazio Abate as he strode into the box to strike a volley towards goal, but the first moment of controversy arrived on the stroke of half time, as the home side felt aggreived that they were not awarded a penalty.
Alessandro Diamanti's delivery into the area appeared to strike the flailing hand of Seedorf, but the referee was unmoved, despite the protestations of the Bologna players, and the match went into the interval all-square.
Di Vaio, who produced a superb all-round performance, almost edged his team back ahead within minutes of the restart, but his strike from the left of the area struck the outside of Amelia's post and rebounded to safety.
Then, Milan were gifted the chance to take the lead courtesy of a more than debatable penalty decision. When a ball was played in towards the offside Alexandre Pato, Andrea Raggi casually intercepted, expecting to see a flag. However, when it wasn't forthcoming, Ibrahimovic won the ball, and the Bologna defender's challenge ended with the Swede going to ground and Rocchi pointing to the spot.
Ibrahimovic himself slotted home the kick with aplomb, but the Rossoneri's lead lasted only a matter of minutes as a spirited Bologna levelled the match at 2-2.
Diamanti found himself in space at the edge of the area, and struck low towards Amelia's goal. The keeper looked to have gathered the effort, but the ball squirmed through his fingers and nestled in the corner.
Both sides threatened to collect the points in the closing stages, but neither could find the moment of quality required to claim victory. Milan squander the opportunity to go above rivals Juventus, who play at Roma on Monday night.