Barcelona's seemingly inevitable passage to the Champions League last 16 was postponed by a determined Olympiakos side as the Greek champions held the Spanish giants to a 0-0 draw in an absorbing Group D clash.
Ernesto Valverdes in-form Barca team enjoyed the lions share of possession and chances in an often frenetic, open match at the Georgios Karaiskakis stadium but the La Liga club could not find a way past goalkeeper Silvio Proto.
The Belgian made several fine saves, especially in the first half, to deny a somewhat subdued Lionel Messi and Luis Suarez in a pulsating atmosphere generated by the boisterous home fans.
Barcelona are top of the section with 10 points, having extended their unbeaten run in all competitions to 15 matches with 13 wins and two draws.
Paris St Germain qualified for the Champions League last 16 in emphatic fashion when they extended their perfect Group B record with a 5-0 home win against Anderlecht, with fullback Layvin Kurzawa scoring a hat-trick.
Neymar, back in the team after being sent off during the French 'classic' against Olympique de Marseille nine days ago, scored the second goal on the stroke of halftime after Marco Verratti's opener, with Kurzawa completing the scoreline after the interval.
PSG dominated from the outset but Kylian Mbappe's early strike from inside the box was blocked by Frank Boeckx. The France forward, however, found Verratti in the area on the half-hour for the Italy midfielder to fire the ball into the far corner.
It was a deserved lead for PSG, who doubled their tally four minutes into stoppage time in the first half when Neymar's 20-metre strike went past Boeckx.
Neymar's free kick bounced on to the post and into the path of Kurzawa, who poked home the ball seven minutes into the second half.
The fullback made it 4-0 with a diving header in the 72nd and added his personal third six minutes later with a low shot after being set up by Angel Di Maria.
Atletico Madrid's Champions League hopes hang in the balance after they were held to a 1-1 draw at home by Group C minnows Qarabag from Azerbaijan despite playing a large part of the second half with an extra man.
The home side had far more chances than Qarabag in the first half but fell behind in the 40th minute when Spanish midfielder Michel rose to meet a corner and his header was too powerful for Jan Oblak to keep out.
Midfielder Thomas Partey equalised in the 56th minute with a thunderous long-range strike and Atletico were given another boost when Brazilian Pedro Henrique was sent off a minute later.
Yet despite laying siege to the visitors' area, the Liga side could not find a winner, while Atletico's Stefan Savic was sent off for a second booking in the 88th minute.
Juventus forward Gonzalo Higuain scored a trademark goal to salvage a 1-1 draw for the Serie A side after they had been rattled by lively Sporting.
The Portuguese were the better side in the first half and took a deserved lead when Brazilian midfielder Bruno Cesar followed up to slot in a rebound in the 20th minute.
Higuain was denied by a brilliant Rui Patricio save in the 69th minute but equalised 10 minutes later when he clipped the ball past the Sporting goalkeeper after Juan Cuadrado threaded a pass through the defence.
The win kept Juventus second in Group D with seven points from four games, three ahead of their opponents, and on course for a place in the last sixteen.
CSKA Moscow scored twice in the second half to beat Basel 2-1 as the Russians gave themselves a Champions League lifeline and frustrated their opponents' hopes of booking an early spot in the last 16.
Basel had looked set to wrap up a place in the knockout stage with two games to spare after Luca Zuffi's instinctive lob gave the Swiss side the lead after 32 minutes, but the match was turned on its head following the break.
Alan Dzagoev came off the bench to level in the 65th with a composed chip before CSKA's Swedish midfielder Pontus Wernbloom fired in a vicious drive with 11 minutes remaining to complete a superb comeback.