While Barca top the Primera Division by 12 points, Milan lie third in Serie A - but Kevin-Prince Boateng's controversial opening goal set the Italians on their way at the San Siro.
And Sulley Muntari's superb second put Massimiliano Allegri's side firmly in the driving seat ahead of March 12's return leg at the Nou Camp.
Muntari flashed an early shot over the bar from long range for Milan.
Philippe Mexes made a vital cleaance at the other end to prevent Jordi Alba's cross reaching Pedro Rodriguez and though the same defender then handled Dani Alves' delivery, Pedro had already been flagged offside.
Stephane El Shaarawy's poor touch saw a good chance slip away but resulted in a corner, taken by the prolific young striker, from which Boateng shot just wide.
Milan goalkeeper Christian Abbiati held Xavi's well-struck 30-yard drive and El Shaarawy tracked superbly to the left-back position to break up another Barca attack.
Mexes collected the first yellow card for tripping Lionel Messi and as Barca pressed, Riccardo Montolivo prevented Pedro's backheel reaching Cesc Fabregas.
Boateng's cross eluded a sliding El Shaarawy before a goalless half petered out somewhat.
Sergio Busquets was booked early in the second period after fouling Giampaolo Pazzini, moments before the controversial opening goal.
Montolivo's shot took two deflections, the second off the raised arm of Cristian Zapata, before Boateng fired low past Victor Valdes. Gerard Pique was booked for protesting to Scottish referee Craig Thomson.
Messi blazed an uncharacteristically wayward free-kick high into the stand before Andres Iniesta almost charged down Abbiati's clearance in the six-yard box.
Valdes saved Pazzini's acrobatic volley but at the other end, Iniesta fizzed a drive a foot or so wide and Xavi curled a free-kick just over.
But it was Milan who found a second goal with nine minutes remaining as substitute M'Baye Niang and El Shaarawy combined to set up Muntari, who gave their beautiful approach play the classy finish it deserved.
Carles Puyol, sporting a huge sticking plaster on his forehead after a clash with Pazzini, headed Xavi's corner wide as Barca sought an important away goal.
But it was in vain, with Milan in fact having the best chance during five minutes of stoppage time as late substitute Bakaye Traore wasted a three-on-two break.