Leaders Real Madrid stumbled to a 1-1 draw at Real Betis on Saturday as Aitor Ruibal's brilliant strike cancelled out Jude Bellingham's league-best 12th goal of the season.
Bellingham slotted Madrid ahead at the Benito Villamarin early in the second half after combining magnificently with Brahim Diaz.
But Ruibal drilled an angled shot into the top corner from outside the area to earn Betis a point and extend their unbeaten run in La Liga to 11 matches.
Madrid pulled one point clear of Girona but could lose top spot on Sunday if the surprise challengers beat neighbours Barcelona in a Catalan derby.
Carlo Ancelotti's side thought they had taken the lead when Diaz turned in from close range on 16 minutes after a superb exchange between Bellingham and Rodrygo.
Bellingham backheeled the ball towards Rodrygo who slid the ball between the legs of a defender. An attempted clearance ricocheted off Rodrygo and left Diaz with a tap-in, but the Brazilian was offside in the build-up.
Chasing a fifth successive home league win, Betis twice went close as Ayoze Perez saw an attempt well saved by Andriy Lunin before Willian Jose bent an effort narrowly wide of the far post.
Betis goalkeeper Rui Silva clawed behind a long-range drive from Luka Modric, but he was powerless to stop Bellingham breaking the deadlock eight minutes after half-time.
The England midfielder retrieved the ball deep in Betis territory near the touchline, finding Diaz and chesting down the scooped return pass as he strode into the box and stroked past Silva.
Madrid's lead lasted only 13 minutes as Ruibal was afforded far too much time and space before he rifled home from 20 metres, grabbing his first league goal in a two-and-a-half years.
Both teams pushed for a winner and former Madrid attacker Isco nearly undid his old club when he headed against the post.
Joselu dribbled an effort agonisingly wide in stoppage time at the other end before Lunin tipped over centre-back Chadi Riad's header with the last touch of the game.