There was entertainment to be seen at the Estadio Benito Villamarín as this match was end to end with bright moments for both teams.
Real Madrid controlled the match with 65% possession, but Real Betis were more of a threat in front of goal with five shots on goal to two.
Ayoze Pérez and former Madrid star Isco impressed for the visitors in the first 45 minutes, while Rodrygo and Antonio Rüdiger did the trick for the visitors.
At key moments, Andriy Lunin made the best save before VAR correctly ruled out Brahim Diaz’s goal for offside in the set-piece.
The deadlock was broken in the second half when Brahim’s ball over the top found Jude Bellingham. The Englishman played the ball perfectly and scored his 12th LaLiga goal in 14 games in one fluid movement.
However, Real Betis quickly equalized with a wonder of their own. Aitor Ruibal was left unmarked in front of the box and fired home past a diving Lunin.
The remaining half hour proved tense and without a proper forward, Madrid’s over-reliance on Bellingham for goals was on full display.
The visitors then had Isco’s late header deflected off the post before Lunin tipped another header over the bar at the crunch time to preserve the tie.
The result leaves Madrid one point clear at the top, with Girona and Barcelona licking their lips. Real Betis, meanwhile, sit seventh.
Real Madrid player ratings
GK: Andriy Lunin – 7/10 – Made some decent stops when called upon and was generally confident and commanding in his own penalty area. Had no chance with Ruibal’s strike.
RB: Lucas Vazquez – 7/10 – A better defensive performance from Vazquez than he has delivered at times this season, generally coping well down the right.
CB: Antonio Rudiger – 7/10 – Typically aggressive in the heart of the defence, making one crucial block in the first half to deny Jose.
CB: David Alaba – 6/10 – A solid outing from Alaba who was seldom tested defensively. Didn’t do too much wrong across the 90 minutes.
LB: Ferland Mendy – 6/10 – Betis’ main threat was Perez, who resided down Mendy’s left flank. Lost track of the forward on one occasion as the hosts got in behind him, but was usually up to the task defensively.
CM: Federico Valverde – 6/10 – Not a particularly memorable display from the Uruguayan, who often found himself too deep to influence the game.
CM: Toni Kroos – 7/10 – The midfielder’s excellent passing range was on show throughout as he dictated the tempo of the game. Couldn’t quite produce a moment of magic for Madrid.
AM: Luka Modric – 6/10 – Rolled back the years with some neat touches in the first half and did pop up with the odd chance while playing in a more advanced, almost false-nine role. Substituted after Betis’ equaliser.
AM: Jude Bellingham – 8/10 – Plenty of glimpses of his brilliance in the first half without causing Betis too many problems. That changed early in the second half, as Bellingham combined with Diaz beautifully to give Madrid the lead.
ST: Brahim Diaz – 7/10 – Wonderful dinked ball in behind the Betis backline to set up Bellingham, but wasn’t too involved otherwise.
ST: Rodrygo – 8/10 – Drifted into wide positions on the left-hand side and caused Ruibal all manner of problems. Some wonderful darting runs beyond the Betis defence too, just lacking a little end product. The only way the hosts could stop him was to foul him.
SUB: Dani Ceballos (70′ for Modric) – 6/10
SUB: Joselu (79′ for Diaz) – 6/10
SUB: Nicolas Paz (83′ for Kroos) – N/A
SUB: Nacho (83′ for Vazquez) – N/A