Kevin-Prince Boateng opened the scoring during the second half in controversial circumstances after an apparent handball by Cristian Zapata in the build-up, and Sulley Muntari finished off a counterattack for the second goal with nine minutes to go.
Much like last season's 0-0 quarter-final first leg meeting between the two sides, Barca dominated possession, but were unable to convert their dominance into goals in the face of impressive defensive resistance from the Rossoneri, who now look like convincing favourites to advance to the last eight.
In the absence of the cup-tied Mario Balotelli, Massimiliano Allegri called on Giampaolo Pazzini to partner Stephan El Shaarawy up front, while Xavi passed a late fitness test to start in midfield for the visitors.
Early on, Phillipe Mexes was forced to head away a Jordi Alba cross dangerously close to the far post, but the first real opening came when Pazzini’s flick put El Shaarawy in the clear, but a poor first touch allowed Carles Puyol to remove the danger.
As expected, Milan were put under significant pressure by the tiki-taka football of Barcelona, but, to their credit, were able to stifle the Blaugrana in great numbers, and force them to bide their time with patient passes outside the area.
Mexes was shown a 25th minute yellow card for tripping up Lionel Messi, but the first half passed with little incident as Barca could do little with all their possession, while Milan’s rare forays forward were snuffed out almost as quickly as they began.
The second half progressed in much the same vein as the first with Barca on top, but, just before the hour mark, Milan would take the lead out of nowhere in controversial circumstances.
Kevin Constant laid off a free kick to Riccardo Montolivo, whose shot appeared to cannon off the hand of Zapata. There was no call from the referee, however, and Barca were stunned as Boateng steadied himself to finish from the edge of the box.
Animated protests from the visitors only led to a booking for Gerard Pique, and Barca's frustration continued in front of goal, with Andres Iniesta's fizzing drive from distance about the best they could muster.
And with 81 minutes on the clock, Milan were in dreamland when a sweeping move on the break saw M'Baye Niang release El Shaarawy into the area, who in turn teed up the advancing Muntari for a precise finish from inside the box.
The San Siro was rocking with pride and disbelief, and Barca simply could not find a way back into the match in the time that remained, setting up an enticing second-leg at Camp Nou in three weeks, with the Catalans needing to score at least twice.