Karim Benzema's 88th-minute equaliser prevented Atletico Madrid from going five points clear at the top of the LaLiga table as Real Madrid held their city rivals to a 1-1 derby draw.
Luis Suarez put Atletico ahead in the 15th minute with a deft finish, while they spurned several further chances as the hosts looked to consolidate their position ahead of second-placed Barcelona.
Real, who had penalty claims waved away despite Felipe's apparent handball, rallied in the closing stages and although Benzema was twice denied by Jan Oblak, he finished a fine move with two minutes to go.
Atletico move three points clear of Barca while they remain five ahead of Real – although they have a game in hand on both their rivals – after their late misfortune on a day when Kieran Trippier returned to the ranks after a 10-week betting ban.
Fran Beltran scored the winner as Celta Vigo edged a seven-goal thriller against basement club Huesca.
Santi Mina's opener was cancelled out by goals from Dimitrios Siovas and Rafa Mir as the league's bottom team bounced back.
But Nolito equalised before Hugo Mallo put Celta back in front shortly after half-time.
David Ferreiro hauled the hosts level in the 74th minute but Beltran made it 4-3 two minutes later.
A first-half goal from Mikel Merino lifted Real Sociedad to a 1-0 victory over Levante, while Alex Berenguer's stoppage-time winner earned Athletic Bilbao a 2-1 win over Granada after Jorge Molina had cancelled out Asier Villalibre's early opener.
In Italy, AC Milan closed the gap on city rivals Inter to three points at the top of Serie A with a 2-0 victory over Hellas Verona.
After Rade Krunic had opened the scoring, Manchester United loanee Diogo Dalot doubled his side's advantage in style, finding the top corner from just inside the box five minutes after the break.
Roma moved up to fourth after Gianluca Mancini's first-half header earned them a 1-0 win over Genoa.
Elsewhere, a last-gasp Radja Nainggolan equaliser earned resurgent Cagliari a 2-2 draw at Sampdoria.
The visitors had taken the lead through Joao Pedro, only for two goals in three minutes from Bartosz Bereszynski and Manolo Gabbiadini to turn the tide in Sampdoria's favour.
But Nainggolan's deflected effort earned Cagliari a valuable point at the very end.
A Lorenzo Insigne double and Victor Osimhen's effort helped sixth-placed Napoli beat Bologna 3-1, with Roberto Soriano scoring the visitors' only goal in the second half.
Basement club Crotone ended their seven-game losing run with a 4-2 win over fellow strugglers Torino.
After Nwankwo Simy's opener was cancelled out by Rolando Mandragora just before half-time, Simy got his and Crotone's second in the 54th minute.
Arkadiusz Reca made it 3-1 before late goals from Antonio Sanabria and Adam Ounas completed the scoring. Torino had Tomas Rincon sent off late on.
A late Simone Iacoponi own goal saw Fiorentina grab a share of the spoils in a 3-3 draw against 19th-placed Parma.
Following goals from Lucas Martinez Quarta, Juraj Kucka, Nikola Milenkovic and Jasmin Kurtic, Parma appeared to have snatched all three points when they took the lead for the first time in the game through Valentin Mihaila in the 90th minute.
But Iacoponi's own goal in the fourth minute of added time ensured both teams left with a point.
In the Bundesliga, Jonas Hector's late effort cancelled out Josh Sargent's opener as Cologne held Werder Bremen 1-1, while Arminia Bielefeld and Union Berlin played out a goalless draw in new Bielefeld boss Frank Kramer's first game at the helm.
In the Coupe de France, 10-time winners Marseille were dumped out by fourth-tier Canet Roussillon at the last-32 stage following a 2-1 defeat.