Nikola Vlasic, on loan from Everton, gave CSKA a second-minute lead at the Luzhniki Stadium, profiting from diabolical defending to rifle home from the edge of the Madrid penalty area.
Casemiro and Karim Benzema both hit the woodwork before half-time in Tuesday's tie, with coach Julen Lopetegui turning to Luka Modric and Mariano Diaz - who headed against the post late on - from the bench.
But with key men including Isco and Gareth Bale absent due to injury and captain Sergio Ramos rested, Madrid fell to defeat at the Luzhniki Stadium and have now failed to score in three consecutive matches, with CSKA celebrating a famous win despite Igor Akinfeev's 96th-minute red card.
Keylor Navas was back in goal for Madrid and he had to pick the ball out of his net after just 65 seconds, Vlasic rifling home after a combination of errors from Toni Kroos and Raphael Varane.
Akinfeev denied Kroos a chance to make amends but Fedor Chalov should have made it 2-0 after more poor defending, instead hitting a tame shot Navas saved easily.
Casemiro's placed 25-yarder clipped the post and Benzema's header also came back off the woodwork before the break, after which Lopetegui sent on Modric and Mariano.
But a toothless Madrid continued to toil, Benzema wasting a good chance and Marco Asensio slicing a volley over the angle.
Mariano cracked a towering header against the post in the last minute of normal time and Varane headed wide before Akinfeev saw red for furiously confronting referee Ovidiu Hategan.
But after another game without a Madrid goal questions will be asked about decisions made by Lopetegui.
What does it mean: Madrid missing Ronaldo
Madrid's former Champions League hero Cristiano Ronaldo was not playing on matchday two for Juventus either, instead serving a suspension, but his absence was felt in this game. So often Ronaldo dragged Madrid through matches in which they played poorly through sheer force of will. Only Mariano has arrived to replace Ronaldo and with one goal scored in their last four matches in all competitions, it is all too obvious what - or rather who - Lopetegui's side miss.
Vlasic hot streak continues
With three goals in four CSKA appearances, Vlasic is a man in form and he will hope someone at Everton was keeping a close eye on this game. Few forwards would have been alert to the chance Madrid gave up immediately after kick-off but Vlasic got the better of World Cup-winning defender Varane before beating Navas with a precise finish. Vlasic is just 20 but he looks a star in the making and a first senior Croatia call-up cannot be far away on this evidence.
Rotation backfires for Lopetegui
With Isco, Gareth Bale and Marcelo all out injured, it was a strange decision from Lopetegui to leave Ramos at home and start with Modric on the bench. Lopetegui surely cannot expect a bits-and-pieces player like Lucas Vazquez to make the difference on this stage. Asensio underperformed and the lack of leadership in the side Lopetegui selected was all too evident.
Key Opta Stats
- Real Madrid failed to score in a Champions League game for the first time since April 2016 vs Man City, ending a run of 29 consecutive matches in which they found the net in the competition.
- CSKA Moscow have lost just one of their eight previous matches against Spanish teams in all European competitions (W4 D3).
- Akinfeev was shown the first red card of his Champions League career, in what was his 57th appearance.
- Real Madrid have kept just two clean sheets in their last 13 away Champions League games.
Lopetegui may be glad Madrid are on the road again so he can avoid white handkerchiefs at the Bernabeu - they are at Deportivo Alaves on Saturday, with CSKA having a derby with Lokomotiv Moscow to look forward to a day later. Matchday three sees Madrid welcome Viktoria Plzen, while CSKA are away to Roma.