The Russians were one of three sides involved in a confusing tug-of-war to qualify behind Bayern, but this loss and Manchester City’s 2-0 win at Roma means the English side progress and CSKA do not even get the consolation of the Europa League.
They could simply not keep their side of the bargain, with Thomas Muller’s penalty – his club-record 24th goal in the competition – and strikes from Sebastian Rode and Mario Gotze doing for them.
With their place in the knockout rounds assured Bayern did not need to worry about any of the qualifying chaos below them, and made five changes to the side which faced Bayer Leverkusen in the league last time out.
They still started well, though, passing the ball with their usual style although the first real chance fell to CSKA, with Seydou Doumbia heading wide from a Roman Eremenko cross from the right.
Bayern remained patient in their approach and 18 minutes in they were able to take the lead. Bebras Natcho took down Franck Ribery on the edge of the area and, despite the obvious protestations, Muller stepped up to tuck in his record goal.
CSKA looked to respond and the ever-lively Doumbia broke clear only to see an effort saved by Manuel Neuer who stood his ground.
Gotze then had a home effort chalked off for offside, and Eremenko headed over, while Igor Akinfeev had to make his first real save as he kept out a Bastian Schweinsteiger long-ranger.
Bayern would hold their lead at the break, but only after Doumbia wasted a great chance. He broke, again at pace, but his touch as he approached the area let him down and the home defence were able to clear.
Any suggestions Bayern may be taking it easy were dispelled further at the break as Robert Lewandowski and Arjen Robben came on, and the former was straight into the action with an effort that Akinfeev shoved away.
Robben was the next man to take aim and be denied by the keeper, just as news of City’s goal in the Italian capital came through.
To their credit CSKA kept going and Ahmed Musa hit wide after a good move, but they were put to bed six minutes from the end.
A cross from Schweinsteiger from the left made it to Rode who came in at the back post and nodded into an open goal and with the game up for CSKA, Gotze put away a stoppage-time third.