London: Champions League favourites Real Madrid came from behind to beat Porto 3-1, holders AC Milan were held 0-0 by Celta Vigo and Manchester United lost 1-2 at VfB Stuttgart on a night of surprises on Wednesday.
Chelsea suffered a shock 0-2 defeat by ten-man Besiktas at Stamford Bridge, while Lazio had to come from two goals down to draw 2-2 with Sparta Prague in Rome.
Red cards flourished too as Panathinaikos had a player sent off but grabbed a late equaliser to hold Rangers 1-1 in Greece, while Olympique Marseille hammered ten-man Partizan Belgrade 3-0 with a Didier Drogba hattrick.
The unexpected began after just seven minutes in Portugal, where Costinha put Porto ahead against Real and went on to dominate possession. However, they conceded an Ivan Helguera equaliser, fell behind to a Santiago Solari strike and had their fate sealed after the break by a Zinedine Zidane volley.
The win kept Real firmly at the top of Group F with six points, followed by the team they trounced 4-2 a fortnight ago, Marseille. The French clubís task at the Stade Velodrome was eased by a red card in first-half stoppage time for Partizanís Andrija Delibasic.
Milan stayed top of Group H with four points following their draw in Spain, while Ajax Amsterdam were 2-0 winners over Club Bruges with a brace from Wesley Sonck. Ajax are second in the group on three points, ahead of Celta on two.
But on a miserable night for English clubs there were humbling defeats for United, who had demolished Panathinaikos 5-0 a fortnight ago, and Chelsea, also looking for a second win.
Stuttgart, top of the Bundesliga without conceding a goal this season, hit Alex Fergusonís side with two second-half goals on the break in the space of two minutes by Imre Szabics and Kevin Kuranyi.
United, Champions League winners in 1999, were back in the game when Dutch striker Ruud van Nistelrooy converted a 67th-minute penalty but were lucky to stay in it when US keeper Tim Howard saved a penalty.