Ryan Sessegnon became Tottenham's youngest ever goalscorer in the Champions League when he cancelled out an early strike from Kingsley Coman, but Bayern scored twice more through Thomas Muller and Philippe Coutinho to move onto 18 points in the section.
Serge Gnabry somehow turned wide of the Tottenham post in the early exchanges after finding himself free inside the penalty box, but the offside flag came to the Germany international's rescue.
Spurs actually had the game's first shot on target in the fourth minute, although Sessegnon's attempt was comfortably gathered by Manuel Neuer between the Bayern sticks.
The home side had a golden chance to take the lead in the 12th minute when Ivan Perisic picked out the run of Benjamin Pavard inside the Spurs box, but the 2018 World Cup winner saw his effort saved by Paulo Gazzaniga before the Tottenham goalkeeper denied Thiago from the rebound.
Bayern were ahead less than two minutes later, though, when a clever pass from Gnabry freed Coman inside the away team's box, and the Frenchman carefully slotted the ball into the bottom corner of the net.
Spurs were level in the 20th minute, however, when Sessegnon smashed the ball past Neuer from inside the area after Giovani Lo Celso's deflected pass had released the teenager.
Perisic then headed wide of the away side's post moments later as both teams continued to threaten.
Bayern were forced into a change in the 27th minute when Coman appeared to pick up a knee injury when attempting to control the ball while on the move. The France international was able to limp down the tunnel, and Muller was sent onto the field as the wide attacker's replacement.
Lo Celso just missed the Bayern crossbar with an attempt in the 27th minute, before Gnabry had a strike deflected just wide of the post down the other end of the field.
Moussa Sissoko incredibly found himself free inside the Bayern box 10 minutes before the interval, but the France international looked for a pass and horribly over-hit his cross as the chance evaporated.
Bayern had another huge opportunity in the 38th minute when an attempt from Thiago hit the post before dropping at the feet of Gnabry inside the Spurs box, but the attacker somehow bundled the ball wide from close range.
The German giants did score a second before the interval, however, when Muller poked the ball home from close range after Alphonso Davies had seen his low strike hit the inside of the post.
Bayern looked to have scored a third in first-half stoppage time when Coutinho struck a wonderful effort from distance, but Gazzaniga produced a stunning save to tip the ball onto the crossbar.
The home side also had the first chance of the second period after smart work from Gnabry released Muller in a dangerous area, but the German could only place his effort wide of the target.
Gazzaniga then had to save from Coutinho after the Brazil international had again struck from distance, before the attacker - on loan from Barcelona - bent a free kick wide of the post just before the hour.
Coutinho was not to be denied, though, and found the bottom corner with a curling strike in the 64th minute to hand the Bundesliga giants clear daylight in the European clash.
Bayern were utterly dominant as they went in search of more goals, with Gnabry and Muller both coming close with attempts as the contest headed towards its final 20 minutes.
Neuer had to keep out a tricky Christian Eriksen free kick in the 77th minute, but Tottenham, who had left the likes of Harry Kane, Dele Alli and Jan Vertonghen at home, were finding it very tough to carve out chances.
Bayern continued to move the ball in the latter stages of the contest, and it proved to be a comfortable night for Flick's team despite Robert Lewandowski remaining on the bench.
Gazzaniga had to make another smart save to keep out a powerful Coutinho drive late on before Eriksen passed up an opportunity down the other end, with the final whistle being blown at 3-1.
Bayern top the section with Tottenham finishing second, and both teams will find out their last-16 opponents when the draw for the next round is made on Monday.
BAYERN MUNICH (4-2-3-1): Neuer; Pavard, Martinez (Zirkzee 87'), Boateng, Davies; Kimmich, Thiago; Perisic (Goretzka 87'), Coutinho, Coman (Muller 27'); Gnabry
TOTTENHAM HOTSPUR (4-2-3-1): Gazzaniga; Walker-Peters, Foyth, Alderweireld, Rose; Dier (Wanyama 81'), Sissoko; Lo Celso (Skipp 65'), Eriksen, Sessegnon; Lucas (Son 65')body check tags ::