Jude Bellingham scored a late winner as Real Madrid beat Barcelona to move 11 points clear at the top of La Liga after an enthralling El Clasico. Bellingham smashed into the roof of the net as the clock ticked into stoppage time as Real twice came from behind at the Bernabeu.
Andres Christensen scored the opener for Barcelona but a Vinicius Jr penalty had the game level at half-time.
Fermin Lopez made it 2-1 to Barca before Lucas Vazquez equalised again.
The victory puts Real firmly on track to reclaim the title with just six games left to play this season.
It looked set to be a positive night for Barcelona when Christensen rose above Toni Kroos to meet Raphinha's corner after just six minutes.
But those celebrations were short lived as referee Cesar Soto Grado pointed to the penalty spot when Pau Cubarsi fouled Vazquez in the area, handing Vinicius the opportunity to score his 13th La Liga goal of the campaign.
Lamine Yamal thought he had restored Barcelona's lead when he flicked a corner towards goal and goalkeeper Andriy Lunin, who was behind the line, clawed it away.
Barcelona were adamant the ball had cross the line but, as La Liga does not have goalline technology, the video assistant referee decided it that was not the case.
A tense second half came to life in the 69th minute with Lopez turning in from close range after Lunin parried a cross into his path.
However, Carlo Ancelotti's Real drew level for a second time just four minutes later with Vazquez emerging unmarked at the far post to meet Vinicius' cross.
The win extends Real's unbeaten record across all competitions to 28 matches - winning 22 and drawing six - with their last loss at home coming against Villarreal on 8 April 2023.