Milan succeeded where nine teams before them had failed by preventing Messi from scoring in a game which started brightly but was ultimately a disappointment.
However, the stalemate sets up an intriguing second leg at the Nou Camp next Tuesday when a scoring draw for seven-times European champions Milan would put them through.
Messi had a 17th-minute effort ruled out for offside and dominant Barca had a strong shout for a penalty when Alexis Sanchez went down but Milan had chances too, Robinho hooking over early on and Ibrahimovic wasting an excellent position.
Argentine world player of the year Messi was agonisingly close to snatching a late win for the Spaniards when he was blocked at close-range by goalkeeper Christian Abbiati, with Massimo Ambrosini blocking Tello's effort from the rebound.
Ambrosini typified the defiant attitude of the Italian champions when, having blocked Tello's effort, he celebrated as if he had scored a championship-winning goal.
"We did what we had to do in attack and defence, it's a good result against Barcelona," Milan coach Massimiliano Allegri told reporters.
"We had some good chances which we didn't take early on and after 25 minutes, Barcelona began playing well."
Messi had scored 21 goals in his last nine outings for club and country, his extraordinary run including a five-goal haul, one of four goals and two hat-tricks, He has netted a Spanish record of 55 in all competitions this season.
Had he scored on Wednesday, the 24-year-old would have taken his Champions League tally to 13 for the season, a new record.
There was, though, no way through a Milan defence superbly held together by Philippe Mexes and 36-year-old Alessandro Nesta, standing in for the injured Thiago Silva.
Allegri had promised that his team would attack Barcelona and not use spoiling tactics, but that is exactly what they did for most of the second half and some of the first.
At one point in the second period, Messi tried one of his trademark runs into the area but was expertly ushered away by Ambrosini while toughnut Nesta hauled him down on two occasions.
The game could have turned out very differently if Robinho and Ibrahimovic had taken early chances for the Serie A leaders.
The Brazilian missed a sitter when Ibrahimovic headed the ball to him and he contrived to hook wildly over the bar.
Swede Ibrahimovic was the guilty party shortly afterwards when Clarence Seedorf, a surprise inclusion by Allegri, rolled the ball into this path but the former Barca front-man shot weakly at Victor Valdes.
Barcelona, who failed to score for only the fourth time this season, were already getting into the stride and stringing together some of their trademark passing moves.
They had a penalty claim turned down when Sanchez appeared to be tripped by Christian Abbiati before Messi had a goal rightly disallowed for offside.
Xavi and Sanchez sliced the Milan defence apart with a delightful one-two which ended with Abbiati just managing to push the Spain midfielder's shot away.
Milan's stout defence was symbolised by left-back Luca Antonini producing a superb last-ditch tackle to stop Sanchez firing on goal as Barca resembled the home side for long spells.
Iniesta began the second half with a run and shot which just went wide and after that the defences prevailed until a lively last few minutes which Milan were relieved to come through.
Barcelona coach Pep Guardiola had few complaints, except a pitch where large lumps of turf kept coming out.
"If UEFA want teams to put on a spectacle, they have to
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Try your first month for just £1 / $1 / €1