Madrid recorded their fourth win in four Group B games, and their 12th consecutive victory in all competitions, beating Liverpool 1-0 at the Santiago Bernabeu thanks to a first-half Karim Benzema goal.
Meanwhile, Dortmund shrugged aside their dreadful domestic form to maintain their perfect record in Group D, crushing Galatasaray 4-1 in Germany.
Elsewhere, Atletico Madrid and Bayer Leverkusen won to close in on qualification for the last 16 while Juventus, Basel and Benfica all recorded precious victories but Arsenal threw away a three-goal lead to draw 3-3 with Anderlecht in London.
Carlo Ancelotti’s Madrid utterly outclassed Liverpool in winning 3-0 at Anfield two weeks ago and a similar outcome appeared on the cards when visiting manager Brendan Rodgers named a side missing regulars such as captain Steven Gerrard and Raheem Sterling.
However, in the end the only goal of the game came in the 27th minute, Benzema converting a Marcelo cross at the back post. That meant Cristiano Ronaldo remains on 70 Champions League goals for now, one short of the competition record still held by Madrid great Raul.
“I think we played well, albeit the tempo wasn’t that high,” said Ancelotti, while Rodgers praised Liverpool’s display.
“I thought we were very unfortunate not to get something from the game. You see many teams come here and the game is over after 20 minutes. For our attitude and courage to play I thought we could have got at least a draw,” he said.
Liverpool are now three points behind second-placed Basel, who crushed Ludogorets Razgrad 4-0 in Switzerland with Breel Embolo, Derlis Gonzalez, Shkelzen Gashi and Marek Suchy on target.
Dortmund followed up a 4-0 win away to Galatasaray in Turkey two weeks ago by defeating the same team 4-1 in the return fixture with Marco Reus, Sokratis Papastathopoulos and Ciro Immobile all finding the target before a Semih Kaya own-goal late on, with Hakan Balta grabbing a consolation for the visitors.