The 34-year-old Peru international, usually second choice behind Mario Mandzukic, has recently been called on to help the Bavarians out of trouble.
He did just that when he tapped in twice with the instinct of a world-class centre forward to turn the game around after Bayern trailed 2-1 at halftime.
The win will give the Bavarians a major confidence boost ahead of their semi-final second leg against visiting Real after losing the first leg 1-0 in Madrid this week.
Bayern, who had won just one of their previous four league games, got off to a bad start with Theodor Gebre Selassie catching the defence napping to complete a swift counter-attack in the 10th minute.
Wearing black armbands in memory of former Barcelona coach Tito Vilanova, who died this week, Bayern briefly came back when out-of-form Franck Ribery managed to level after a good pass from Pizarro.
The Bayern defence remained shaky, however, with Aaron Hunt sending his marker Jerome Boateng the wrong way to slot in after 36 minutes.
Bayern, looking for a consecutive treble of titles this season, improved markedly after the break, scoring three goals in eight minutes.
They levelled with Pizarro, who turned scorer, tapping in after a Ribery corner was headed on by Thomas Mueller in the 53rd.
The Peruvian, top of the league's all-time foreign scorers list, repeated the same move four minutes later to put them 3-2 ahead before Bastian Schweinsteiger completed their explosive burst with a fine header on the hour.
Arjen Robben completed the scoring in the 74th minute with a trademark left-footed shot after cutting in from the right.
VfL Wolfsburg twice squandered a lead they had taken through Ivan Perisic's double strike against Freiburg to draw 2-2 and miss the chance to leapfrog into Champions League contention.
They are fifth on 54 points, as many as fourth-placed Bayer Leverkusen, who take on Borussia Dortmund later on Saturday (1630 GMT).
Mainz 05 inched closer to securing a European spot, beating Eintracht Frankfurt 2-0 to jump into sixth spot.
Eintracht Frankfurt keeper Kevin Trapp saved an 83rd minute penalty in a 0-0 draw against ten-man Hoffenheim that all but secured their place in the top division.
Eintracht Braunschweig were not so lucky, remaining in last place after losing 2-0 at Hertha Berlin and need a minor miracle to stay up with two games left.
- Sports & Recreation
- Mario Mandzukic
- Franck Ribery
- Theodor Gebre Selassie