Messi netted his 76th and 77th goals in Europe’s premier club competition to put Luis Enrique’s side in the driving seat ahead of the return encounter in Germany on Tuesday night.
And an injury-time strike from Neymar all but booked Barcelona’s place in the final in Berlin in June.
Bayern coach Pep Guardiola sprang a major surprise at kick-off by trying to contain Barcelona’s free-scoring attack with a three-man defence tasked with man-marking Luis Suarez, Messi and Neymar.
However, the visitors were grateful to goalkeeper Manuel Neuer for keeping them in the tie in the opening exchanges, with the ever-alert Germany international blocking Suarez’s goal-bound effort with his feet just 12 minutes in, after Messi’s clever headed flick-on had played his strike partner through on goal, before later denying Dani Alves’ close-range shot.
Barca again came desperately close to opening the scoring after 14 minutes when Suarez nipped in ahead of Jerome Boateng in the Bayern penalty area, before firing a dangerous ball across the six-yard box for Neymar to toe-poke goalwards – only to see it deflected behind for a corner by Rafinha.
Guardiola switched to a back four during the first half and striker Robert Lewandowski – wearing a mask to protect his broken nose and cheekbone – really should have put them ahead after 18 minutes, only to side-foot his close-range shot wide of Marc-Andre ter Stegen’s far post after fine approach play by Thomas Muller.
After half-time the home side moved up yet another gear as they sought to press home their territorial advantage and take a crucial lead with them into the second leg at the Allianz Arena.
However, as hard as they pushed, Barcelona struggled to find a way past Neuer, who was in imperious form between the sticks for the Bundesliga champions until the last quarter of an hour of the contest.
With just 13 minutes left to play, the home side finally got the goal their pressure and build-up play warranted as Alves did well to win back possession, before working the ball to Messi on the right edge of the penalty area, and the quick-footed playmaker then beat Neuer at his near post with a fiercely-struck low shot.
Then came the killer second goal three minutes later as Messi firstly sat Boateng on his backside in the box, before keeping his composure to impudently dink the ball over Neuer’s head and move back ahead of Real Madrid forward Cristiano Ronaldo in the all-time Champions League goalscoring charts.
However, if that strike was damaging enough for Bayern, then Neymar’s goal in the fourth minute of stoppage time may well have ended this tie as a contest, with the Brazil international given the freedom of Nou Camp to race on to Messi’s through-ball and beat the helpless Neuer.
But Bayern, who failed to muster a single shot on target in the entire game, will argue Neymar should not have been on the pitch at the time after the forward was booked in the second half and was then lucky to escape a second caution after apprearing to take a ‘dive’ in the box minutes later.