Robben strike sends Bayern into cup quarters
Robben struck seconds before the final whistle after Bayern came from a goal down to level early in the second half.
"We got a lucky win in the end against a very tough team," Bayern coach Jupp Heynckes told reporters. "Bochum were outstanding and made our life very difficult."
Bundesliga champions Dortmund, who played for almost 90 minutes with 10 men after the dismissal of defender Patrick Owomoyela in the 34th minute, were on the backfoot for much of the game against the second division leaders and 1979 and 1980 German Cup winners which finished 0-0.
Dortmund defender Lukasz Piszczek almost gifted the hosts an extra-time lead with a clearance that forced a spectacular save by his goalkeeper Roman Weidenfeller.
Dortmund coach Jurgen Klopp then got his marching orders for dissent and watched the rest of the game from the stands.
Weidenfeller secured a last eight spot for his team after saving one penalty in a dramatic shootout that saw two spot-kicks retaken and two yellow cards for Dortmund players.
"These were controversial refereeing decisions [to retake the penalties] and that offered a lot of drama for the fans," said Dortmund central defender Mats Hummels.
"It was a fight and I think it is the first time in our club history that we hit all five of our penalties."
Hoffenheim grabbed a 2-1 win in an all-Bundesliga clash with Augsburg while Nuremberg slumped to a 1-0 home defeat by second division club and local rivals Greuther Fuerth after a 15th-minute goal by Edgar Prib as the visitors finished with 10 men.
In Bochum, the hosts showed no fear against Bundesliga leaders Bayern and deservedly grabbed the lead midway through the first half with Giovanni Federico tapping in from close range after goalkeeper Manuel Neuer failed to reach a Mirkan Aydin low cross.
Bayern brought on Bundesliga top scorer Mario Gomez for Ivica Olic, who had started instead of the Germany international, after the break and the change paid off as the visitors charged forward.
Jerome Boateng hit the crossbar right after the restart and Franck Ribery fired narrowly wide. Toni Kroos was then on target in the 52nd minute after a fine one-two with Gomez to level.
But the Bavarians had to wait until stoppage time to finally break Bochum's resistance with Robben firing in from 10 metres after a pass from Ribery as they continued their quest for a treble this season.
Holders Schalke 04 travel to Borussia Monchengladbach on Wednesday.