Barcelona Raphinha Ferran TorresGetty Images
Alex Brotherton
BBC Sport journalist
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.
The Player Rater cannot be displayed in your browser. Please enable JavaScript or try another browser.
How to play
Rate players out of 10 for this game. The rater will close 30 minutes after the final whistle. You must be signed-in to a BBC account to play.
1 Give it up
10 Pure perfection
Barcelona
Real Madrid
Starting XI
25W. Szczęsny
1
2
3
4
5
6
7
8
9
10
35Gerard Martín
1
2
3
4
5
6
7
8
9
10
5Iñigo Martínez
1
2
3
4
5
6
7
8
9
10
2Pau Cubarsí
1
2
3
4
5
6
7
8
9
10
24Eric García
1
2
3
4
5
6
7
8
9
10
8Pedri
1
2
3
4
5
6
7
8
9
10
21F. de Jong
1
2
3
4
5
6
7
8
9
10
11Raphinha
1
2
3
4
5
6
7
8
9
10
20Dani Olmo
1
2
3
4
5
6
7
8
9
10
19Lamine Yamal
1
2
3
4
5
6
7
8
9
10
7Ferran Torres
1
2
3
4
5
6
7
8
9
10
Substitutes
3Alejandro Balde
1
2
3
4
5
6
7
8
9
10
15A. Christensen
1
2
3
4
5
6
7
8
9
10
32Héctor Fort
1
2
3
4
5
6
7
8
9
10
16Fermín López
1
2
3
4
5
6
7
8
9
10
6Gavi
1
2
3
4
5
6
7
8
9
10
Back to team tabs
Starting XI
1T. Courtois
1
2
3
4
5
6
7
8
9
10
20Fran García
1
2
3
4
5
6
7
8
9
10
35Raúl Asencio
1
2
3
4
5
6
7
8
9
10
14A. Tchouaméni
1
2
3
4
5
6
7
8
9
10
17Lucas Vázquez
1
2
3
4
5
6
7
8
9
10
8F. Valverde
1
2
3
4
5
6
7
8
9
10
19Dani Ceballos
1
2
3
4
5
6
7
8
9
10
7Vinícius Júnior
1
2
3
4
5
6
7
8
9
10
5J. Bellingham
1
2
3
4
5
6
7
8
9
10
15A. Güler
1
2
3
4
5
6
7
8
9
10
9K. Mbappé
1
2
3
4
5
6
7
8
9
10
Substitutes
21Brahim Díaz
1
2
3
4
5
6
7
8
9
10
10L. Modrić
1
2
3
4
5
6
7
8
9
10
16Endrick
1
2
3
4
5
6
7
8
9
10
44Víctor Muñoz
1
2
3
4
5
6
7
8
9
10
Back to team tabs
After the opportunity to rate players has closed, the score displayed represents the average from all the submissions by BBC Sport users.
Related topics
Spanish La Liga
Barcelona
Real Madrid
Football