The Bavarians sealed progression to the DFB-Pokal semi-final by overcoming the holders, who struggled to break down their opposition throughout
An Arjen Robben strike just before half time was all there was to separate the two teams in a tense match, which saw Roman Weidenfeller make a string of key saves to keep the Bavarians at bay.
With the hosts in superb form, it was Jupp Heynckes' side who showed all of the early initiative. In just the fourth minute, Dante lifted the ball over the top, but neither Bastian Schweinsteiger nor Thomas Muller's outstretched legs could reach it.
Shortly afterwards, Robben forced a great save from Roman Weidenfeller after being played in by Toni Kroos, who later had a great chance of his own after the keeper pushed a deflected cross into his path, but could not adjust his body in time.
At the other end, Dortmund had very little to show for their efforts. Only Mario Gotze looked to be capable of producing anything of note, but all of his efforts were in vain, as the Roten defence stood firm.
Bayern began to exert their dominance on the game more and more as the half wore on. An heroic header from Felipe Santana stopped Dante from reaching a left-wing cross and the Brazilian produced a fine save from Weidenfeller from close range after a superb ball from Schweinsteiger, before Robben's moment arrived.
The Dutchman had missed two superb chances to open the scoring, sending one over the bar from close range, and forcing the busy Weidenfeller into another stop, but in the 43rd minute, some hesitant defending from Marcel Schmelzer allowed Philipp Lahm to feed Robben, who lifted the ball into the top corner from 20 yards.
Within seconds of the start of the second half, Muller had a chance to double the advantage, but could not get the ball out of his path, allowing the BVB defence to come back in numbers.
And so it remained. Bayern continued to dominate possession, and while Dortmund had a couple of bright moments on the break, they had little to show for their efforts, save an Ilkay Gundogan effort from distance which Manuel Neuer stopped with ease.
Eventually, though, they began to craft out better sights of goal. The Germany midfielder had another strike blocked, before Marco Reus, who had been a quiet presence for much of the game, flashed another shot wide of goal.
Bayern, though, were still capable of testing Weidenfeller time and time again, with Kroos having two strikes, one from close range and one from distance which was beaten away by the BVB keeper, before Martinez saw an effort tipped over.
Daniel Van Buyten then missed the target with a header from a corner, and Dante had two efforts saved by Weidenfeller from another set piece. The keeper was in action late on to deny Mario Mandzukic
Time was rapidly running out for Dortmund to grab an equaliser, and although they pressed and probed, Bayern's defence remained firm and impregnable. Their best chance arrived deep into stoppage time when Lukasz Piszczek crossed for Julian Schieber, who headed over from close range.
In the end, there was no dramatic twist in the tale, and the Bundesliga leaders held on to claim their place in the last four.
Meanwhile, Freiburg have also made the semi-finals by producing a superb late comeback to beat Mainz 3-2 after extra-time, with Daniel Caligiuri scoring twice, former Bayern man Ivica Olic found the net as Wolfsburg triumphed over Kickers Offenbach, and Stuttgart claimed a 2-0 win over Bochum.