Franck Ribery was sent off in the 33rd minute for two quick yellow cards, but after a scoreless first half, Gomez fired Bayern in front in the 48th, Alaba was on target in the 63rd, and Kroos followed 2 minutes from time.
Bayern opened a six-point lead atop the standings with the rest of the league yet to play its final match of the first half, meaning its cushion will be no smaller than three points after the first half of the season.
The Munich side controlled the match in the first half, but Cologne frustrated the hosts at Allianz Arena, leading to Ribery's marching orders just after the half-hour mark.
Ribery was fouled by Henrique Sereno inside the area, and responded angrily to the challenge, then grabbed the Cologne man by the throat to earn another card and the ejection.
Despite going down a man for the final hour, Bayern continued to show it was a better side and the opener came early after half when Thomas Muller set up the on-fire Gomez to convert from the middle of the area.
Alaba replaced Muller minutes later, and he provided the next goal off a cross from Toni Kroos, as he converted to the bottom-right corner from the edge of the 6-yard box.
Kroos was on the receiving end in the 88th, as he took a pass from Alaba and sent a right-footed shot into the net for his first league goal this season.
Bayern, which learned Friday it will play Basel in the Champions League final 16, ends the first half with 12 wins. Cologne sits 10th on 21 points.
Defending champions Borussia Dortmund visits Freiburg on Saturday, when it can move back within three points of Bayern. Schalke, which sits level on points with Dortmund, hosts Werder Bremen on Saturday.
In Saturday's other matches, Bayer Leverkusen, which learned Friday it will play Barcelona in the last 16 of the Champions League, hosts Nurnberg, Hamburg hosts Augsburg, Hoffenheim hosts Hertha Berlin, and Wolfsburg hosts Stuttgart.
On Sunday, Kaiserslautern hosts Hannover, and Monchengladbach hosts Mainz.