Frenchman Ribery fired in for the lead in the 22nd minute but substitute Markus Rosenberg levelled early in the second half.
Ribery added another inbetween Dutchman Robben’s penalties to lift Bayern to 31 points and end a two-game losing streak in style. Bremen had Aaron Hunt sent off late in the game for a foul.
Dortmund, who took a first-half lead through Robert Lewandowski before Mike Hanke rifled in a 20-metre equaliser, are on 30 points along with third-placed Gladbach.
Dominant VfL Wolfsburg squandered a two-goal lead against Mainz 05 to draw 2-2.
Wolfsburg’s Makoto Hasebe was sent off late in the game to complete a disappointing evening for Felix Magath’s team, who had also wasted a 3-0 lead last season against Mainz.