Lionel Messi scored his 500th Barcelona goal as his stoppage-time winner against ten-man Real Madrid breathed life into his side’s title challenge.
Messi – sporting a black eye and damaged teeth following Marcelo’s first-half challenge – struck twice in a dramatic 3-2 win to take Barcelona to the top of La Liga.
Ivan Rakitic was also on target for Barcelona, while Casemiro and James Rodriguez – the Colombian having equalised in the 85th minute – scored for hosts Real, who had captain Sergio Ramos sent off.
Ramos received an El Clasico red card for the second successive season 13 minutes from time after a reckless lunge. Messi was fortunate that the Spaniard’s two-footed challenge did not make contact with him and that he avoided serious injury.
Barcelona go top because they have a better head-to-head record than Real, but Zinedine Zidane’s team have a game in hand with six matches left to play.
This was a thrilling spectacle from start to finish, but one man stood tall on a dramatic night.
Messi’s double took his goals in this fixture to 22 and set a new El Clasico La Liga record of 16, eclipsing the mark of former Real great Alfredo Di Stefano.
But Messi kept his best for the final seconds, sweeping home Jordi Alba’s cross into the corner of the net as the clock ticked into the second minute of stoppage time.
Real were convinced they should have been awarded a second-minute penalty when Cristiano Ronaldo fell under the challenge of El Clasico debutant Samuel Umtiti.
Barcelona, without the suspended Neymar, had been slow to get in to their stride, but Luis Suarez skewed two shots wide, while Karim Benzema was also guilty of tame finishing at the other end.
There was little pause for breath, with Ter Stegen pushing out Ronaldo’s low drive and Messi on the painful end of Marcelo’s elbow.
Although it appeared a complete accident, Messi was left with blood pouring from his mouth and needed treatment before he was able to continue.
There was even greater pain for Barcelona as Real took a 28th-minute lead when Marcelo’s deep cross found Ramos who hooked the ball against the post before Casemiro tapped into an empty net.
Barcelona were level within five minutes. Suarez let Rakitic’s pass run into Messi’s path and the Argentinian swerved past Dani Carvajal to finish unerringly past Keylor Navas.
Gareth Bale was forced off on the occasion of his 100th La Liga appearance with what looked like a recurrence of an ankle injury.
It almost got worse for Real when Messi’s shot flew narrowly wide off Carvajal, but Barcelona had their own moments of anxiety straight after the re-start. Ter Stegen showed sharp reflexes to deny Toni Kroos and Benzema, but it was Real goalkeeper Navas who would become increasingly over-worked.
Navas kicked away Paco Alcacer’s prodded effort and then reacted brilliantly to keep out Pique’s bullet header.
Rakitic gave Barcelona the lead with a ferocious left-footed drive from 20 yards and Real’s fate appeared sealed when Ramos was banished.
Rodriguezlooked as if he had handed Real a point, but then came the brilliance of Messi.