Lionel Messi netted a brace to send Barcelona into the second round as they beat AC Milan 3-1 at the Camp Nou.
Barca took the lead when Ignazio Abate was judged to have bundled over Neymar in the area, and Messi powered the penalty past Christian Abbiati to end his three-game goal drought.
They doubled their advantage five minutes before the break when Sergio Busquets was left unmarked to head home from Xavi's free-kick, but Milan reduced the arrears in the dying seconds of the first half as Gerard Pique diverted the ball into his own net from Kaka's centre.
Messi then added his second of the night, exchanging passes with Cesc Fabregas before clipping the ball stylishly over the goalkeeper to round off a deserved win for the hosts.
Celtic's Champions League hopes are hanging by a thread after they slumped to the bottom of Group H with a 1-0 defeat by Ajax at the Amsterdam ArenA.
Lasse Schone, who had scored after coming on as substitute in the 2-1 defeat at Celtic Park, grabbed the winner with a well-taken goal in the 51st minute to sink the Scottish champions, who were far from their best in what was a mostly scrappy game.
In the other game in Arsenal and Borussia Dortmund's group, Napoli beat Marseille 3-2 with two goals from Gonzalo Higuain as they moved level with Arsenal on nine points at the top of Group F.
Atletico Madrid booked their place in the last 16 with a 4-0 win over group minnows Austria Vienna.
Centre-back Joao Miranda got the ball rolling by scoring the first after 11 minutes, and soon Raul Garcia doubled the advantage with a headed goal. Filipe Luis increased the lead on the stroke of half-time and then Diego Costa finally added his name to the scoresheet on 82 minutes.
Diego Simeone's side will go into the second round draw seeded as group winners, having won all of their four games - a record only matched by last year's winners Bayern Munich.
Zenit St Petersburg were held to a 1-1 draw at home to Porto in Wednesday's early kick-off.
Porto took the lead on 23 minutes when Lucho Gonzalez headed in at the far post from Danilo's cross, but Zenit hit back swiftly as former Porto striker Hulk took advantage of a defensive mix-up to nip in, take the ball past goalkeeper Helton and slot into the empty net.
The Brazil international had a chance to put the Russian side ahead early in the second half, but his tame penalty -- awarded for a Nicolas Otamendi handball -- was saved by Helton, and the hosts ultimately had to settle for a point despite applying late pressure.
In the other game in Chelsea and Schalke's group, Basel substitute Giovanni Sio scored in injury time to claim a 1-1 draw against Steaua Bucharest at St Jakob Park after Federico Piovaccari's opener.
Download ESPN's new UK sport app, a fresh and powerful new way to follow your favourite UK sports news, scores and video.