Chances were at a premium as the two sides adopted a largely safety-first policy to ensure they would go into the return match with everything still to play for.
Barcelona enjoyed their usual two-thirds majority of possession but Milan played in a controlled and calm manner, and even created the best chances on the counter-attack.
There were times during the first period in which they looked capable of repeating Inter Milan's famous 3-1 semi-final, home leg victory over Barca in the same stadium two years ago.
But by the second half Milan's attacking threat had all but dried up and Barca seemed unable or unwilling to commit enough men forward to break down their stubborn hosts.
Instead a close second leg awaits in Spain next Tuesday where Milan will feel confident that progress could hinge on the scoring of an away goal, which Barca failed to do here.
Milan coach Massimiliano Allegri said he felt more confident of progression now that his side had kept a clean sheet at home.
"In the next match we can get two results from three (a win and a draw) so in respect to (before) tonight we have a slightly bigger chance (of progressing), notwithstanding the fact that Barca are the best team in the world," he said.
"In some moments we played well, although in others we were too defensive."
Barca coach Pep Guardiola said Milan's high spirits were a compliment to his team.
"I admire their faith and self belief but it was always like this with the Milan of (Arrigo) Sacchi and (Fabio) Capello so they're happy with this 0-0," he said.
"It's a great eulogy for us and what we've done in the past that they're happy.
"They know that if they score, we need to score two and if they score two then we need three.
"But we're used to playing to win, we know it will be difficult."
Milan almost got off to a dream start following a Barcelona mistake but Kevin-Prince Boateng hesitated a moment too long, allowing Gerard Pique to block his shot.
The ball spooned up and Zlatan Ibrahimovic teed up Robinho but he skied his finish.
Barcelona had plenty of possession but Milan were playing intelligently, sitting back and waiting as Barca knocked the ball around while pressing hard when the Catalans were short in numbers around the ball.
The hosts created the next chance as Clarence Seedorf played in Ibrahimovic, who took a touch and tried to slip the ball past Victor Valdes but the goalkeeper got down well to save.
Barcelona were struggling to get in behind Milan's disciplined backline but after one slick passing move Xavi played a one-two with Lionel Messi only for Christian Abbiati to save low to his right.
Another nice move seemed to come unstuck when Alexis Sanchez played a silly flick but Luca Antonini was sleeping and Xavi pounced to shoot, but Milan blocked it.
Sanchez burst beyond the Milan defence but Antonini doggedly stuck to the task, chased him down and blocked the Chilean's shot.
Chances were few and far between but Messi was handed a free-kick opportunity from 25 yards after Alessandro Nesta unceremoniously hacked him down, but the Argentine magician curled his effort over.
From a corner Barca captain Carles Puyol darted onto Xavi's ball but his glancing header bounced just beyond the far upright.
The best chance of the match came in the final minutes as Djamel Mesbah slipped allowing Messi a clear sight of goal but Abbiati made a full length stop before Antonini blocked Tello's follow-up.
UEFA Champions League: AC Milan hold Barcelona to goalless stalemate
Advertisement