Milan missed out on the chance to cut leaders Internazionale's lead to five points, while third-placed Juve are still four points behind the Rossoneri in the race for second.
Clarence Seedorf put Carlo Ancelotti's men ahead on 56 minutes after Massimo Ambrosini's mis-hit shot fell into his path but a superb diving header by Vincenzo Iaquinta four minutes later levelled an end-to-end match in which both sides had great chances to win.
Milan ended the game with 10 men after Giuseppe Favalli was sent off for an innocuous-looking challenge on Juve sub Alessandro Del Piero with five minutes remaining.
Until then, they dominated possession with Juventus preferring quick, direct counter-attacks and both styles were effective without cancelling each other out.
Juve almost drew first blood on 11 minutes but Christian Poulsen fired over after an Amauri knock-down from what became a typical Bianconeri long ball.
The visitors had another good chance five minutes later but were foiled by Mathieu Flamini's superb slide tackle to deny Marco Marchionni who went one-on-one with Zeljko Kalac.
Less than 60 seconds later Iaquinta had a good appeal for a penalty turned down when Flamini and Paolo Maldini seemed to bring him down in the Milan area, while the Italy striker was furious again after five minutes when he went down in the box under pressure from Flamini.
The rest of the first half saw Milan keep the ball well and both sides lookedfairly threatening but there were no more clear-cut chances until a rather eventful second 45 minutes.
The hosts should have taken the lead a minute and half after the restart, but Filippo Inzaghi headed wide after he was found unmarked by a David Beckham corner.
Flamini saved his side's bacon with another brilliant last-gasp tackle to prevent Amauri from a simple finish after Kalac fumbled a daisy-cutter by Iaquinta.
Milan took the lead though, when a quick break released Inzaghi down the left. He cut the ball back for Ambrosini, whose wild swing at the ball would have been embarrassing had it not landed at the feet of the onrushing Seedorf, who had a simple finish.
The advantage did not last long though as, on the hour mark, Mauro Camoranesi swung a dipping cross from the right over the head of Maldini and into the path of Iaquinta, who stooped ahead of makeshift right-back Flamini to head into the bottom-right corner.
With a draw not really good enough for either side, 'hell for leather' was the tone for the remainder of the match.
There were opportunities - Inzaghi and Ronaldinho went close for Milan while Iaquinta and Del Piero had chances for Claudio Ranieri's men.
There was controversy - Alexandre Pato was brought down by Nicola Legrottaglie but no penalty awarded, while Favalli was somewhat harshly dismissed after Del Piero theatrically hurled himself to the ground.
There were even handbags, when spectators were given the unusual sight of Maldini losing his cool and grappling with Giorgio Chiellini, an incident that saw both defenders booked.
However, there was no winning goal and a draw was a fair result in a match that suits Inter after their 2-2 draw at Chievo.