Jupp Heynckes' men were given a run for their money by the Foals, but ultimately did just enough to edge past the hosts and book their place in the domestic showpiece
After two action-packed periods and half an hour of extra time had ended goalless, the game went to the lottery of spot-kicks.
Bayern Munich proved to have nerves of steel, netting all their penalties, while Havard Nordtveit and Dante missed for Gladbach as the Foals' fairytale in the cup came to an end.
Bayern started the game aggressively, creating their first chance within just six minutes after the first whistle. Toni Kroos latched onto a clearance by Dante to smash a superb shot onto the left post from just outside the box.
The Bavarians did well to absorb any pressure Lucien Favre's men were trying to apply, but could not find enough space to pierce the Foals' watertight defence. Arjen Robben and Franck Ribery looked isolated on the flanks, and did not see much of the ball.
Gladbach created their first real chance of the game in the 20th minute when a precise through-ball by Roman Neustadter released Marco Reus on the left side of Bayern Munich's defence, but the Germany international was denied superbly by Manuel Neuer.
Jupp Heynckes' men, however, slowly regained the upper hand and dominated the final minutes of the half. Ribery exploded into life, leaving Tony Jantschke reeling on the wing before finding Robben, who could only fire over the bar from close range.
Moments later Bayern Munich's left flank once again bypassed Monchengladbach's defence, with David Alaba sending in a superb shot from a tight angle, only to see it pushed away by Marc-Andre ter Stegen in the home goal.
Not much changed after the restart as the two teams remained evenly matched. However, it was Bayern Munich who created the first chance of the second period as a lovely one-two between Thomas Muller and Robben culminated in the Dutchman once again failing to hit the target.
The Bavarians were almost punished for this miss when Reus found himself in a one-on-one with Neuer, but as he managed to hold off the goalkeeper and squared for Juan Arango, his team-mate blasted over the bar when it looked easier to score.
The tempo dropped in the following minutes as extra time seemed imminent. In the final moments of the second period, though, each team had a chance to open the scoring, but Gomez and Reus were guilty of unflattering misses.
Bayern Munich dominated the two halves of extra time, but Monchengladbach held on and the sides resorted to penalties.
Alaba, Ribery, Philipp Lahm and Toni Kroos all netted for the Bavarians, while only Filip Daems and Patrick Herrmann converted for the Foals as Jupp Heynckes' men progressed to the final, to set up a meeting with title rivals Borussia Dortmund.