The league leaders' team bus ran out of fuel on the way to the Weserstadion, but Pep Guardiola's side had no issues hitting top gear themselves in a comfortable victory.
The champions cruised to a sixth-straight league victory as Thomas Muller opened the scoring before David Alaba added the club's 100th goal in all competitions this season.
Robert Lewandowski scored twice late on and captain Philipp Lahm came off the bench to feature for the first time since suffering an ankle injury in November to cap a fine day for the Bavarians.
Second-placed Wolfsburg could reduce the gap at the top back to 11 points with a win against Freiburg on Sunday.
Borussia Dortmund missed the chance to close in on Bremen in ninth, and the top half, as they were held 0-0 at home by Cologne.
Jurgen Klopp's side played out a second consecutive league draw, following four straight wins, while Peter Stoger's men move five points clear of the bottom three.
Schalke needed a 90th-mintue equaliser to take a point from their trip to Hertha Berlin, but still lost ground in the race for UEFA Champions League qualification.
The hosts twice led, through Anis Ben-Hatira and Genki Haraguchi, before Leroy Sane and Joel Matip hit levellers in each half.
Sixth-placed Augsburg were beaten 2-0 at home by Mainz, thanks to goals from Shinji Okazaki and Koo Ja-cheol.
Hoffenheim climbed within two points of Markus Weinzierl's side with a 3-0 win against Hamburg, who have now not won in five league matches.
And Eintracht Frankfurt bounced back from defeat to Cologne by inflicting Paderborn's fourth straight loss, 4-0.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.