Vinicius Junior and Mariano Diaz’s goals took them a point clear of their bitter rivals at the top of the Liga table and gave them the better head-to-head record, which could be crucial in such a tight title race.
Certainly, there is little to choose between the two teams, as Sunday’s game showed. This entertaining, end-to-end battle at the Santiago Bernabeu between two clearly flawed teams could have gone either way.
Both sides had chances in a frantic opening to the game, as Antoine Griezmann blazed a great chance over the bar on 23 minutes.
And Real Madrid keeper Thibaut Courtois was called into action before the break, to save from Lionel Messi and Arthur Melo.
However, the tide turned after the break, as Real Madrid grew into the game, and Marc Ter Stegen had to pull off a brilliant stop to keep out Isco’s effort on 56 minutes.
With Real Madrid in the ascendancy, they looked to push for a winner in the closing stages, with Brazilian Vincius providing the key breakthrough with 20 minutes to go.
Toni Kroos fed him in behind the Barcelona defence, and he squeezed an effort past Ter Stegen at the near post, via a deflection from Gerard Pique.
Barcelona did look to rally, as Pique headed over the bar on 82 minutes, but the hosts sealed the win in added time.
Diaz, who had only been on the pitch for less than a minute latched onto a long ball forward, and tucked home past Ter Stegen.