Real Madrid moved to the top of LaLiga as they edged out rivals Barcelona 2-1 in a tense edition of El Clasico.
Oscar Mingueza got Barca back into it on the hour mark, but Lionel Messi could not end his goal drought in this fixture on the night he matched Sergio Ramos' record of 45 appearances, and Madrid took the spoils.
The win moves them above both Barca and neighbours Atletico, with only one point separating the top three, at least until Diego Simeone's side face Real Betis on Sunday.
It finished goalless between strugglers Alaves and Copa del Rey finalists Athletic Bilbao at San Mames.
The veteran Sweden striker was shown a straight red card shortly after the hour mark for appearing to say something to the referee.
Ibrahimovic had set up Ante Rebic to open the scoring early on, with Franck Kessie making it 2-0 just before half-time.
Riccardo Gagliolo pulled a goal back for relegation-threatened Parma, but Rafael Leao made sure of victory in stoppage time.
The Rossoneri are now eight points behind leaders Inter, who play their match in hand against Cagliari on Sunday.
Spezia scored twice in the last two minutes through Giulio Maggiore and Martin Erlic to complete a remarkable comeback in a 3-2 win over bottom club Crotone, while Torino boosted their survival hopes with a 1-0 victory at Udinese.
A much-changed Bayern Munich side were held to a 1-1 draw at home to Union Berlin as their advantage at the top of the Bundesliga was cut to five points with six games left to play.
Bayern made nine changes with several players unavailable through injury and illness and others rested ahead of Tuesday's Champions League match against Paris St Germain, but still led through Jamal Musiala's 65th minute goal.
But Marcus Ingvartsen bundled in at the far post five minutes from time, allowing RB Leipzig to cut the gap with a 4-1 win at Werder Bremen.
Dani Olmo opened the scoring before a quick-fire brace from Alexander Sorloth had Leipzig in total control before the break, and though Milot Rashica pulled one back from the penalty spot after the hour, Marcel Sabitzer almost immediately restored Leipzig's two-goal advantage.
Jude Bellingham scored his first Bundesliga goal as Borussia Dortmund came from behind to beat Stuttgart 3-2.
After Sasa Kalajdzic put Stuttgart in front, Bellingham levelled two minutes into the second half.
Another teenager, Ansgar Knauff would get the winner with his first Bundesliga goal after Daniel Didavi cancelled out Marco Reus' first league goal since December.
However, Edin Terzic's side remain seven points behind fourth-placed Eintracht Frankfurt, who beat fellow European hopefuls Wolfsburg 4-3 earlier on Saturday.
Hertha Berlin and Borussia Monchengladbach shared the points from a 2-2 draw.
In Ligue 1, Paris St Germain kept the pressure on leaders Lille with a 4-1 victory at Strasbourg.
Kylian Mbappe fired through Matz Sels' legs to open the scoring before Pablo Sarabia and Moise Kean all-but wrapped up victory by half-time.
Dion Moise Sahi pulled one back for Strasbourg, but Leandro Paredes completed the scoring late on.
Victory keeps Mauricio Pochettino's side three points behind Lille, who won 2-0 at Metz on Friday.
Gaetan Laborde's goal deep into stoppage time earned Montpellier a 3-3 draw with 10-man Marseille in a thrilling contest.
Andy Delort put the hosts ahead inside the opening minute, but Marseille struck twice – through Arkadiusz Milik and Pape Gueye – inside the final moments of the first half to lead at the break.
Laborde levelled two minutes into the second half but though Duje Caleta-Car saw red just after the hour, Lucas Perrin's 71st minute goal looked like giving Marseille victory until Laborde's late intervention.