Dani Ceballos (Modric 76') – N/A. Looked slightly off the pace in what proved to be a brief cameo for the midfielder. EPA
BARCELONA PLAYER RATINGS: Marc-Andre Ter Stegen – 7. Saved from Benzema in front of the huge 95,745 crowd, the biggest in the world this season. Got down to save again from Benzema on 79. Prevented Madrid getting the win they needed. AFP
Ronald Araujo – 7. Played right-back to deal with the speed of Vinicius. Struggled with it and inadvertently headed the ball from the Brazilian into his own goal after eight minutes. Involved in the equaliser. Blocked an 85th minute Madrid attack. AFP
Andreas Christensen – 7. Barely gave the ball away, even when he started to play long balls rather than pass out from the back as Barcelona usually do. Big win in a big – and impressive – first season for the Catalans. AP
Jules Kounde – 8. Top defending. Cut out a dangerous Madrid attack on the hour – a big recovery. Celebrated like his side had won the league at the end, which, given their 12-point lead, they all but have. AFP
Alejandro Balde – 7. Well organised and mature beyond his years but struggled with making his attacks against a top-level rival. Best moment was the vital cross to set up a 90th minute winner for Kessie. Booked. AFP
Sergi Roberto – 8. The Catalan was picked above Kessie as the replacement for the injured Pedri. Smashed an early shot over the bar but equalised a minute before half time when he side-footed past Courtois. Booked. Scored four goals in 17 league appearances this season - as in his previous four seasons. Man of the match. AP
Sergio Busquets – 8. Excellent defending. Poor pass let Rodrygo go for a shot on 62 minutes but kept the midfield discipline despite moments of Madrid play. “You can never say it’s over with 12 games to play, but we’re 12 points clear and that’s going to be hard for Madrid,” said his fellow midfielder Roberto. EPA
Frenkie De Jong – 8. Set up Raphinha in the movement that led to the equaliser. His through balls between the Madrid lines were a threat. Best midfielder on the pitch. AP
Gavi – 8. His usual will to win saw him charge back to try and stop the attack which led to Madrid’s second. It didn’t work. But the offside flag was in Barca’s favour to keep it 1-1. Picked out Lewandowski in an 87th minute attack, but it broke down. AFP
Raphinha – 9. Powerful header saved by Courtois inside five minutes, then cut in from the right and saw a shot tipped over on 34. Booked for a 32nd minute tackle on Kroos. Barca’s best attacker and gave Nacho a difficult time. AFP
Robert Lewandowski – 6. Rifled a shot from 20 yards after eight minutes. Worked hard chasing the ball, shot wide on 58 and volleyed over on 66 as the Catalans pushed to take the lead. Back heel to Balde led to the winning goal. AFP
SUBS: Franck Kessie (Roberto 76’) – 8. Tried to run into the box. Scored his first Barcelona goal in the 90th minute, to send his side 12 points clear. The stuff dreams are made of. AP
Ferran Torres (Raphinha 82’) – N/A. Bit part. Getty
Ansu Fati (Gavi 90’) – N/A. First touch was in the Madrid box but Carvajal pushed him off the ball. Ceballos tried to kick him and was booked. As was Fati. AFP
REAL MADRID PLAYER RATINGS: Thibaut Courtois – 7. Made a string of world-class saves and proved why he’s one of the best in the business in his position. AFP
Nacho – 6. The defender was vocal and had good focus under pressure with some solid interceptions. Getty
Antonio Rudiger – 5. German centre-back was confident at both ends of the pitch and had a nice aerial presence but shouldn’t leave so many gaps. EPA
Eder Militao – 4. Looked off the pace whenever Lewandowski was putting pressure on him, especially for the winning goal. AFP
Dani Carvajal – 5. Left more than a few openings on the inside despite his overlapping runs. Getty
Toni Kroos – 5. Despite sitting deep, Kroos came across as quite lazy and lethargic when he was off the ball. AP
Eduardo Camavinga – 7. Played a role in Real’s only goal, had solid positioning and pressure, and linked up with those around him nicely. EPA
Luka Modric – 7. The Croatian’s wonderful vision paid off on more than one occasion, but he was left with a lot to do on his own in midfield. AP
Vinicius Junior – 7. Showed wonderful ingenuity for the opening goal but needed some extra help when getting to the byline. Reuters
Karim Benzema – 5. Went missing far too often despite some good pressure in the first half hour. AFP
Federico Valverde – 4. While his movement was good, he needs some better link up play and improved finishing at every turn. AP
SUBS: Ferland Mendy (Nacho 62') – 6. Got into good positions in the final third but should’ve stuck to his man for what proved to be the winner. EPA
Rodrygo (Kroos 62') – 6. Showed solid physicality but didn’t do too much to influence the result of the game. Getty
Aurelien Tchouameni (Camavinga 76') – N/A. Looked comfortable on the ball and was incredibly forward-pressing after coming on. AP
Marco Asensio (Valverde 76') – N/A. Scored with what was essentially his first touch, only for it to be ruled out due to a narrow offside. AFP
Dani Ceballos (Modric 76') – N/A. Looked slightly off the pace in what proved to be a brief cameo for the midfielder. EPA
BARCELONA PLAYER RATINGS: Marc-Andre Ter Stegen – 7. Saved from Benzema in front of the huge 95,745 crowd, the biggest in the world this season. Got down to save again from Benzema on 79. Prevented Madrid getting the win they needed. AFP
Ronald Araujo – 7. Played right-back to deal with the speed of Vinicius. Struggled with it and inadvertently headed the ball from the Brazilian into his own goal after eight minutes. Involved in the equaliser. Blocked an 85th minute Madrid attack. AFP
Andreas Christensen – 7. Barely gave the ball away, even when he started to play long balls rather than pass out from the back as Barcelona usually do. Big win in a big – and impressive – first season for the Catalans. AP
Jules Kounde – 8. Top defending. Cut out a dangerous Madrid attack on the hour – a big recovery. Celebrated like his side had won the league at the end, which, given their 12-point lead, they all but have. AFP
Alejandro Balde – 7. Well organised and mature beyond his years but struggled with making his attacks against a top-level rival. Best moment was the vital cross to set up a 90th minute winner for Kessie. Booked. AFP
Sergi Roberto – 8. The Catalan was picked above Kessie as the replacement for the injured Pedri. Smashed an early shot over the bar but equalised a minute before half time when he side-footed past Courtois. Booked. Scored four goals in 17 league appearances this season - as in his previous four seasons. Man of the match. AP
Sergio Busquets – 8. Excellent defending. Poor pass let Rodrygo go for a shot on 62 minutes but kept the midfield discipline despite moments of Madrid play. “You can never say it’s over with 12 games to play, but we’re 12 points clear and that’s going to be hard for Madrid,” said his fellow midfielder Roberto. EPA
Frenkie De Jong – 8. Set up Raphinha in the movement that led to the equaliser. His through balls between the Madrid lines were a threat. Best midfielder on the pitch. AP
Gavi – 8. His usual will to win saw him charge back to try and stop the attack which led to Madrid’s second. It didn’t work. But the offside flag was in Barca’s favour to keep it 1-1. Picked out Lewandowski in an 87th minute attack, but it broke down. AFP
Raphinha – 9. Powerful header saved by Courtois inside five minutes, then cut in from the right and saw a shot tipped over on 34. Booked for a 32nd minute tackle on Kroos. Barca’s best attacker and gave Nacho a difficult time. AFP
Robert Lewandowski – 6. Rifled a shot from 20 yards after eight minutes. Worked hard chasing the ball, shot wide on 58 and volleyed over on 66 as the Catalans pushed to take the lead. Back heel to Balde led to the winning goal. AFP
SUBS: Franck Kessie (Roberto 76’) – 8. Tried to run into the box. Scored his first Barcelona goal in the 90th minute, to send his side 12 points clear. The stuff dreams are made of. AP
Ferran Torres (Raphinha 82’) – N/A. Bit part. Getty
Ansu Fati (Gavi 90’) – N/A. First touch was in the Madrid box but Carvajal pushed him off the ball. Ceballos tried to kick him and was booked. As was Fati. AFP
REAL MADRID PLAYER RATINGS: Thibaut Courtois – 7. Made a string of world-class saves and proved why he’s one of the best in the business in his position. AFP
Nacho – 6. The defender was vocal and had good focus under pressure with some solid interceptions. Getty
Antonio Rudiger – 5. German centre-back was confident at both ends of the pitch and had a nice aerial presence but shouldn’t leave so many gaps. EPA
Eder Militao – 4. Looked off the pace whenever Lewandowski was putting pressure on him, especially for the winning goal. AFP
Dani Carvajal – 5. Left more than a few openings on the inside despite his overlapping runs. Getty
Toni Kroos – 5. Despite sitting deep, Kroos came across as quite lazy and lethargic when he was off the ball. AP
Eduardo Camavinga – 7. Played a role in Real’s only goal, had solid positioning and pressure, and linked up with those around him nicely. EPA
Luka Modric – 7. The Croatian’s wonderful vision paid off on more than one occasion, but he was left with a lot to do on his own in midfield. AP
Vinicius Junior – 7. Showed wonderful ingenuity for the opening goal but needed some extra help when getting to the byline. Reuters
Karim Benzema – 5. Went missing far too often despite some good pressure in the first half hour. AFP
Federico Valverde – 4. While his movement was good, he needs some better link up play and improved finishing at every turn. AP
SUBS: Ferland Mendy (Nacho 62') – 6. Got into good positions in the final third but should’ve stuck to his man for what proved to be the winner. EPA
Rodrygo (Kroos 62') – 6. Showed solid physicality but didn’t do too much to influence the result of the game. Getty
Aurelien Tchouameni (Camavinga 76') – N/A. Looked comfortable on the ball and was incredibly forward-pressing after coming on. AP
Marco Asensio (Valverde 76') – N/A. Scored with what was essentially his first touch, only for it to be ruled out due to a narrow offside. AFP
Dani Ceballos (Modric 76') – N/A. Looked slightly off the pace in what proved to be a brief cameo for the midfielder. EPA