Gomez bags brace as Bayern sink Stuttgart
The Bundesliga's top scorer took his tally to 15 goals and 23 in all competitions as Bayern extended their lead at the top.
Seventh-placed Stuttgart played two thirds of the game with 10 men after Cristian Molinaro was sent off although they still could have snatched a late equaliser.
Defending champions Borussia Dortmund lost ground when they again let slip a first-half lead and were held 1-1 at home by lowly Kaiserslautern, completing three games without a win in just over a week.
Bayern have 34 points from 16 games, three ahead of Dortmund and Schalke 04, while Borussia Monchengladbach are a further point back in fourth place.
Stuttgart went ahead in the sixth minute when Molinaro's cross was headed down by Martin Harnik for Christian Gentner to fire his shot past Manuel Neuer.
They enjoyed the lead for only seven minutes until Gomez got in front of his marker to turn Rafinha's cross from the right into the net.
Molinaro was given a second yellow card for a late tackle of Arjen Robben in the 29th minute and Gomez struck the winner when he turned in Philipp Lahm's pass just before the hour.
Bayern did not have it all their own way and Stuttgart nearly levelled when Cacau intercepted Daniel van Buyten's attempted headed pass to Neuer, but the Brazilian-born forward could not keep his shot down.
A superb Olcay Sahan strike gave Kaiserslautern a surprise point in the earlier match where, as in their previous two matches, Dortmund scored first only to see their efforts undone after half-time.
Held 1-1 by Borussia Monchengladbach last weekend and beaten 3-2 at home by Olympique Marseille in the Champions League in midweek, Dortmund went ahead through Shinji Kagawa in the 27th minute.
Kaiserslautern, 15th in the table, levelled on the hour when Lukasz Piszczek mis-directed a headed clearance and the ball fell to Sahan, who fired a dipping volley beyond bemused goalkeeper Roman Weidenfeller.
The visitors nearly snatched a win when Itay Shechter's header was stopped on the line by Weidenfeller and, although the Israeli forced over the rebound, his effort was disallowed for a foul on the goalkeeper.
Mario Gotze then rattled the bar for Dortmund.