Scorers: Messi (77, 80), Neymar (90)
The former Barcelona manager, who won 14 titles in four years with the Catalan giants, saw the architect of so many of his greatest triumphs put him on the brink of a Champions League exit at the penultimate stage for the second successive season.
Going into the game, Guardiola admitted Messi was “just too good” to be stopped and so it proved as the Argentinian ace, who was quiet for long periods, burst into life to give Luis Enrique’s side the advantage before Neymar twisted the knife to make it 3-0 at the death.
Early on, Guardiola lured everyone into a state of confusion by playing three at the back. His bold tactics, which also included a high line and man-marking, created a nervy opening to the game before the hosts got to grips with it.
With Jerome Boateng, Rafinha and Mehdi Benatia going toe-to-toe with Neymar, Luis Suarez and Messi, opportunities were always going to come for Barca and it only took six minutes for Bayern’s backline to creak.
Suarez’s pace had the visitors retreating and, while his scuffed shot from distance did little to trouble Manuel Neuer, it gave Luis Enrique’s side the impetus to up the tempo and put Bayern firmly on the backfoot.
The former Liverpool striker beat Bayern’s offside trap to race clear six minutes later, but Neuer stood his ground and managed to flick Suarez’s goal-bound effort clear with his outstretched right leg.
As Barca cut loose with blistering pace, power and skill, it began to look like Guardiola’s plans would blow up in his face and Rafinha had to be on hand to block a certain goal for Neymar at the far post in the 15th minute.
That seemed to be a wake-up call, with the visitors tightening up and reverting to a more familiar shape afterwards, and a masked Robert Lewandowski was inches away from giving them the lead with their first purposeful raid shortly after.
Thomas Muller found space on the right and played it across the six-yard box for Lewandowski, who was in acres of space, but it was just out of reach for the Poland international.
Five minutes before the break Neuer was once again at his best to deny Brazilian Dani Alves with a block at the far post and keep the tie goalless after a breathless 45 minutes.
Guardiola’s side made a more assured start to the second half, but Barca remained a constant threat on the break. Messi, who buzzed around the periphery of the game for large parts of the first half, unleashed a powerful drive from just outside the box, but Neuer gathered cleanly, making it look easy. And the German justified his “sweeper-keeper” nickname around the hour-mark, when he raced well off his line to thwart Neymar. But, after a night of heroics from Neuer, Messi finally broke his resistance by catching him out on his near post 13 minutes from time.
The Argentine picked up the ball on the right, gave a half-shimmy and then unleashed a left-foot drive. Neuer dived, but was unable to get anything on it.
Messi then left Boateng flat on the floor as he twisted and turned in the Bayern box before chipping home exquisitely for his 10th goal in 11 Champions League matches this season three minutes later.
The four-time Ballon d’Or winner slipped Neymar through against Neuer at the death and the Brazilian remained cool to give Barca an even bigger advantage.
Barcelona: ter Stegen, Dani Alves, Pique, Mascherano (Bartra 88), Jordi Alba, Rakitic (Xavi 82), Busquets, Iniesta (Rafinha 86), Messi, Suarez, Neymar. Subs Not Used: Bravo, Pedro, Adriano, Vermaelen.
Bayern Munich: Neuer, Rafinha, Benatia, Boateng, Bernat, Alonso, Muller (Gotze 78), Lahm, Schweinsteiger, Thiago, Lewandowski. Subs Not Used: Reina, Dante, Javi Martinez, Pizarro, Gaudino, Weiser.
Referee: Nicola Rizzoli (Italy).