The defending champions’ claims for a penalty were turned down when Alexis Sanchez fell under Christian Abbiati’s challenge in a dominant first half.
But Robinho and Zlatan Ibrahimovic had clear openings at the other end as AC Milan threatened on the break.
Cristian Tello was denied by a last-ditch block as Barca ran out of ideas.
The sides played out two pulsating games in Group H earlier in the tournament and AC Milan once again provided a fascinating counter to Barcelona’s staccato passing style.
The last time Barcelona did not score in a Champions League match was on 4 November 2009 in a draw away to Rubin Kazan. The last time they were shut out in an away match in the knockout phase was when they lost 1-0 to Manchester United in the semi-final in 2008.
With the winners set to play the winners of Chelsea and Benfica’s quarter-final, the Serie A leaders maintained their record of never having lost a home quarter-final tie in the competition.
The visitors created a raft of excellent chances in the opening half as they weaved passing patterns around Milan’s defensive veterans Alessandro Nesta and Massimo Ambrosini.
But their finishing could not match the precision of their build-up play.
Xavi’s toe-poke was clawed away by Christian Abbiati after a sharp one-two with Lionel Messi, before Sanchez could not quite burn off the pursuing Luca Antonini, allowing the left-back to get in a last-ditch block.
The Catalan side also had a strong claim for a penalty turned down by the officials after Sanchez was up-ended after he had peeled off the end of the Milan wall as part of a clever free-kick routine.
But in an absorbing contest, Milan also headed to the dressing rooms ruing what might have been. Their pressing game frequently unsettled Barcelona and twice they carved through the remnants of the defending champions’ rearguard after winning possession high up the pitch.
Robinho’s awkward side-foot volley cleared the bar from six yards early on before Zlatan Ibrahimovic, playing against his former club, scuffed a shot into the grateful arms of Victor Valdes after holding Carles Puyol at bay.
The hosts continued to disrupt Barcelona’s usually reliable supply lines after the break and Pep Guardiola’s side could not muster the same sustained level of threat.
The more attack-minded Tello was introduced in place of Andres Iniesta and the 20-year-old wriggled away from Daniele Bonera before rippling the wrong side of the side-netting.
But it was a rare opening as the ageing legs in the AC Milan side chased gamely and Barcelona’s stream of attacking invention dried up.
Ambrosini (34), slid in to block Messi’s shot as the Argentine shaped to pull the trigger just inside the box, before Antonini stretched every sinew to get to a loose ball first with Abbiati out of position.
Their efforts were rewarded as Milan became the first side to keep a Champions League clean sheet against Barcelona for more than two years.
Meanwhile, Barcelona have made an official complaint to Uefa about the state of the San Siro pitch following Wednesday’s Champions League clash at AC Milan.
The first leg of the quarter-final tie between the two sides, which ended goalless, was marred by the deteriorating turf on both flanks of the field.
Barca manager Guardiola and several of his players including Lionel Messi, Xavi Hernandez and Javier Mascherano bemoaned the condition of the pitch after the match, and the matter has now been passed on to European football’s governing body.
The San Siro, known officially and by Milan’s local rivals Internazionale as the Stadio Giuseppe Meazza, is one of the most iconic in world football, but the field has been in poor condition for much of the season.
A brief statement on the European champions’ website reads: “FC Barcelona has presented an official complaint to Uefa about the condition of the pitch at the Giuseppe Meazza for the Champions League match against AC Milan.
“They passed the matter over to Uefa delegate Mikalai Varabyov (Bulgaria) at the post-match meeting. Varabyov has included the complaint in his report and Uefa will demand an explanation from the Italian club.” — BBC/Eurosport.



