Following a goalless first half, Milan struck twice after the break thanks to the two former Portsmouth stars to give the Italian giants a surprise two-goal cushion to take to the Nou Camp for the second leg.
Neither goalkeeper was really tested in the opening half of the game as Barcelona enjoyed plenty of possession, but Milan defended resolutely and tried to hit the Spanish side on the break.
Indeed Milan had the best opportunity on the break in the 16th minute but Stephan El Shaarawy had a heavy touch when looking set to go one-on-one with Barca keeper Victor Valdes and that allowed Carlos Puyol to clear the danger. From the resulting corner kick Boateng hooked a cross-shot just past the far post.
Milan took the lead in controversial circumstances on 57 minutes. A free kick was laid off to Riccardo Montolivo and his shot at goal deflected off the head of a Barcelona defender and seemingly onto the arm of Milan's Cristian Zapata, before Boateng swept the ball past Valdes from the edge of the area. Barca's appeals for the handball were waved away and Milan were awarded the goal.
Barca continued to probe with Andres Iniesta having a rare effort from outside the area which flashed just wide of the far post on 76 minutes.
Milan doubled their lead on 81 minutes when substitute M'Baye Niang went past Puyol down the right and played the ball into the area for El Shaarawy. He then chipped a pass into the path of Muntari, who coolly volleyed in at the back post.
The result will give Milan hope of progressing to the quarter-finals at the expense of the tournament favourites, although Barca will no doubt still fancy their chances of turning the tie around on home soil.