Holders AC Milan revived their campaign, scraping a 1-0 victory in Bruges to go top of Group H despite having Alessandro Nesta sent off in the first half.
Fellow Italians Lazio, however, are in danger of early elimination after a 4-0 mauling by a rampant Chelsea side in Rome's Olympic Stadium, a result that leaves them bottom of Group G.
Manchester United and VfB Stuttgart both took huge strides towards the second phase, crushing Rangers and Panathinaikos respectively in Group E.
Madrid lost their 100 percent record in Group F as they were held by Partizan, but they still became the first club through to the last 16.
Brazilian Ronaldo wasted numerous opportunities for a below-par Madrid, while their defence was run ragged at times by a Serbian side who almost snatched a famous victory when skipper Sasa Ilic shot wide from point blank range.
Real have 10 points, three ahead of Porto who are favourites to join them in the next round after a 1-0 home victory against Olympique Marseille -- Dimitri Alenitchev scoring the winner.
Brazilian midfielder Kaka's perfectly struck volley after 86 minutes secured a priceless victory for Milan to make up for a shock home defeat by the Belgians two weeks ago.
The Italian club lost captain Paolo Maldini to injury after 33 minutes and then had Nesta sent off for a second bookable offence five minutes later.
Milan coach Carlo Ancelotti paid tribute to his side's resolve. "The loss of Nesta was a very important moment for us," he said. "But we handled it well, we stayed calm and we worked our way back into the game.
"Anything is still possible in this group so we shall have to see what happens, but the players showed great character and heart tonight."
Milan, who have seven points, jump ahead of Ajax at the top of a tight Group H after the Dutch club were beaten 3-2 by Celta Vigo -- the Spanish club's first victory. Ajax have six points, Celta five and Bruges slip to the bottom on four.
Manchester United outclassed Scottish champions Rangers 3-0 in the so-called Battle of Britain at Old Trafford with Dutchman Ruud van Nistelrooy ending a lean streak with two goals after Diego Forlan had volleyed United ahead after six minutes.
Champions League debutants Stuttgart stay top of Group E after coming from behind to beat Panathinaikos 3-1 in Athens, so ending the Greek club's hopes of reaching the last 16.
Michalis Konstantinou put the hosts ahead, but Stuttgart replied through Takis Fyssas, Kevin Kuranyi and Andreas Hinkel.
Argentine Hernan Crespo scored against his old club Lazio to begin Chelsea's rout in Rome and send the big-spending London club top of Group G.
Lazio's Sinisa Mihajlovic was sent off in the 53rd minute for a lunge at Damien Duff, although the Serb was lucky not to be punished in the first half when he was seen to spit at Chelsea's Romanian forward Adrian Mutu.
Eidur Gudjohnsen made it 2-0 in the 70th minute before Duff and Frank Lampard completed Chelsea's first European win in Italy. The only sour note for Claudio Ranieri's side was defender Glen Johnson's last-minute red card for kicking the ball away, his second bookable offence.
Chelsea lead the group with nine points, three ahead of second-placed Besiktas after the Turkish club secured a deserved 1-0 victory over Sparta Prague thanks to a late goal from Brazil's Ronaldo Guiaro.
Matches in Groups A-D take place on Wednesday when both Inter Milan and Deportivo Coruna could join Real in the last 16.