Mario Gomez, starting a match in the competition for the first time this season after injury, Thomas Mueller and David Alaba scored the others as Bayern, already qualified, topped Group F and avenged their 3-1 defeat away to the Belarus champions.
Both teams finished with 10 men. Bayern's Jerome Boateng was shown a straight red card for a dangerous studs-up challenge on Artem Kontsevoi in the 50th minute and BATE's Denis Polyakov was given a second yellow for diving.
BATE finished third and qualified for the Europa League.
Swiss international Shaqiri, one of seven changes to the team which drew 1-1 with Borussia Dortmund in the Bundesliga on Saturday, set up Bayern's opener after 22 minutes as he charged to the byline and sent over a low cross which was turned in by Gomez.
BATE were denied an equaliser before halftime when Bayern defender Diego Contento forced Polyakov's effort wide from Kontsevoi's cross.
Bayern, furious about Boateng's red card, still managed to score their next two goals with a one-man disadvantage.
Bastian Schweinsteiger headed on a Toni Kroos free kick and Mueller side-footed into the net from close range in the 53rd minute and Shaqiri headed in a Gomez cross in the 66th minute.
It was the 21-year-old's second goal from Bayern since his move from FC Basel in the close season.
Substitute David Alaba added a fourth with a shot on the turn in the 83rd minute, the Austrian 20-year-old's first Champions League goal. Yegor Filipenko pulled one back for the visitors in the 89th minute. Writing by Brian Homewood in Berne; Editing by Ed Osmond
email@example.com; +41 79 917 1402 Reuters Messaging: firstname.lastname@example.org (Created by Brian Homewood)