Barcelona closed in on the league title as they fought back from two goals down to beat Real Madrid – for whom Kylian Mbappe scored a hat-trick – in a thrilling Clasico.
Real Madrid raced into a 2-0 lead with Mbappe scoring twice inside 14 minutes, but Barca hit four by half-time – one each for Eric Garcia and Lamine Yamal, and two for Raphinha.
Mbappe scored again with 20 minutes left, to take his club total in all competitions to 39 – the most ever by a Real Madrid player in their debut season – and Barca’s Fermin Lopez had a goal ruled out for handball in a gripping finish.
Victory put Barca seven points clear of their arch-rivals with three games left to play.
Hansi Flick named an unchanged Barcelona side following their draining Champions League semi-final defeat by Inter Milan on Tuesday, and in the early stages they looked lethargic.
Mbappe converted from the penalty spot after he was felled by Barcelona goalkeeper Wojciech Szczesny, and added a second after running on to Vinicius Junior’s through ball in behind Barcelona’s high defensive line.
As the Frenchman celebrated, he likely didn’t expect what came next at the Lluis Companys Olympic Stadium.
Garcia halved the deficit with a header from a corner in the 19th minute, before Lamine Yamal produced his latest piece of brilliance.
The 17-year-old was quiet for the first half-an-hour, but announced his arrival in the match by curling a sumptuous strike into the bottom corner of Thibaut Courtois’ goal.
Barca pressed Real Madrid relentlessly and took the lead less than two minutes later when Raphinha found himself in space on the left of the box – after Mbappe and Lucas Vazquez got in each other’s way under pressure – and arrowed past Courtois.
The Ballon d’Or candidate then headed over Yamal’s cross, but made no mistake in converting Ferran Torres’ cut-back after stealing possession from Vazquez.
Moments earlier Mbappe thought he had won a penalty, but a video assistant referee review showed Jude Bellingham was fractionally offside.
Barcelona started the second half as they ended the first – Raphinha raced into the Real Madrid half and squared for Yamal to tap home, but the Brazilian was rightly flagged offside.
Real Madrid looked to be flagging when Mbappe completed his hat-trick from close range to move two goals clear in the race to be La Liga’s top scorer, before Raphinha missed a sitter from a few yards out at the other end.
Victor Munoz, Madrid’s 21-year-old substitute, blazed over when bearing down on goal, before Mbappe forced Szczesny into a smart low stop.
Fermin Lopez looked to have scored a brilliant fifth, but a VAR check ruled it out for handball in the build-up.
Having already beaten Real Madrid in La Liga, the Spanish Super Cup final and the Copa del Rey final this season, Barca equalled the record they set in 1982-83 of winning four Clasicos in a single campaign.
That Real Madrid have conceded 16 goals in four Clasicos this season illustrates their decline and Barcelona’s improvement over the past nine months.
Barcelona will win the league title with victory against neighbours Espanyol on Thursday, or if Real Madrid lose to Mallorca on Wednesday.