David Villa's first goal for Barcelona and a Filippo Inzaghi stunner meant that the Gamper Trophy had be decided on penalties, with the Blaugrana winning the shoot-out 3-1.
Barcelona had a number of youngsters in the first eleven whereas Milan started with a strong line-up and took control of the match from the off with Andrea Pirlo dictating the pace of the game.
Barca slowly grew into the match with Andres Iniesta exerting his influence in the midfield and as the half wore on the Spanish side were very much on top.
Much of the pre-match build up had revolved over the future of Zlatan Ibrahimovic as to whether or not he will make a move to the Rossoneri. The Swede started and looked a threat throughout the first 45 minutes, combining well with David Villa before the break.
It was Villa though, who gave Barca the lead one minute into the second half after Adriano was allowed to fire a low cross in from the left. Villa stole in-front of Amelia to poke past the stranded Milan 'keeper.
Both teams made plenty of changes during the second half, disrupting the flow of the match. Milan though were at odds to compete with the fast flowing Barca passing movements and counter attacks, although the Italians did show flashes of brilliance through Ronaldinho and Clarence Seedorf, but they were unable to penetrate the Barcelona defence.
But against the run of play, Inzaghi scored a wonderful goal for the visitors, as the ball was played over the defence from the right, he volleyed into the far corner from the 18 yard line, lobbing Jose Pinto in the process. It was spectacular stuff from the veteran striker.
Milan had substitute goalkeeper Flavio Roma to thank for keeping the scores level as he produced a number of impressive stops. Barcelona couldn't make a breakthrough and the game was decided on penalties.
Barcelona kick off their La Liga campaign away to Racing Santander on Sunday, while Milan also play on Sunday at home to Lecce in Serie A.