At the beginning of the clásico, a huge banner was unfurled at the south end of the ground welcoming a “White Christmas”. At the end, it was the handful of Barcelona fans high in the opposite stand who celebrated. Way below, their players applauded back, marking a victory whose consequences will be profound: theirs will be happy holidays. Their coach, Ernesto Valverde, insisted that the league is not yet won and Real Madrid’s Zinedine Zidane said the same, but goals from Luis Suárez, Lionel Messi and Aleix Vidal carried the Catalans 14 points ahead of their biggest rivals.

Real Madrid 0-3 Barcelona: El Clásico – as it happened Read more

The last time these two teams met, back in August, Gerard Piqué admitted feeling inferior to Madrid. How quickly things change. Twenty-five games have passed since, Barcelona have lost none and by the close here the superiority was theirs, imposed almost by stealth, bit by bit until it was complete.

“It’s a defeat that hurts,” Zidane said. “They were sunk [in August], people said; tomorrow, we’re the ones that are ‘sunk’. We accept that, that’s football. We’re pissed off but Madrid never surrender, no matter what. People can think the league is over but I don’t think so and I don’t think the opposition coach thinks so either.”

With Valencia later losing 1-0 at home to Villarreal, Barça’s lead is up to nine points from Atlético Madrid, who had already lost, at Espanyol on Friday.

The game at the Bernabéu ended with the ball in Real’s net; it had started with the ball in Barcelona’s when Cristiano Ronaldo’s header went in off the bar only for the linesman’s flag to be raised for offside. Then Ronaldo swung and missed by the penalty spot. Ten minutes had gone and with Mateo Kovacic a surprise inclusion detailed to prevent Sergio Busquets from bringing the ball out and Messi from finding time or space the visitors had barely had possession.

“We struggled to overcome that pressure,” Valverde said, yet it also appeared they were in no hurry. They arrived with an 11-point lead over their hosts, after all, and as Valverde had warned: “It is when you think you’re on top that Madrid hit you.”

Those fears were borne out: Thomas Vermaelen brought down Luka Modric as he broke through; Ronaldo shot against Sergi Roberto and another Ronaldo effort hit goalkeeper Marc-André ter Stegen’s foot. Karim Benzema then hit the post from Marcelo’s cross.

For Barcelona, Paulinho had two good chances. Messi clipped a wonderful ball into the midfielder’s run and his excellent shot was pushed over by Keylor Navas after half an hour before the goalkeeper saved a near-post header. From the corner, Piqué’s header hit Dani Carvajal and Messi’s 45th-minute free-kick thudded against Ronaldo’s head. As they departed at half time, he held out a hand. When they reappeared, the visitors asserted themselves.

Madrid appeared to take a step back, symbolised by Kovacic’s shift from Busquets to Messi, although Valverde suggested that was more a consequence of his side’s improvement than a conscious decision. Andrés Iniesta released Jordi Alba, but Luis Suárez’s shot was under-hit.

A minute later Busquets turned near his own area. Stepping away from Toni Kroos, he found Ivan Rakitic. The space opened up in front of him, Kovacic heading out of his path to follow Messi, and Rakitic laid it to Sergi, who crossed for Suárez to score.

Madrid were preparing a change, Gareth Bale and Marco Asensio standing at the side of the pitch, when Barcelona doubled the lead. Messi put Suárez clear, Navas saved the first shot but Messi collected the rebound and returned it to Suárez, whose second effort came off the post to Paulinho. From his header Carvajal made a neat one-handed save. Paulinho bundled the ball over the line, but the referee blew, pulled out a red card and pointed to the spot, from where Messi thumped in the penalty.

Carvajal walked, head down and 10 minutes later, Bale and Asensio were introduced, a last attempt to break Catalan control. Messi drew another save from Navas, who also stopped Nélson Semedo. Twice more Navas denied Messi but Madrid had not given up. Ter Stegen made a fantastic save from Bale, then blocked a Sergio Ramos effort. There was still time, but it was Barcelona who used it. Messi evaded Marcelo and crossed for Vidal to score. He had been on the pitch less than a minute.

It was over. The clásico, and maybe the league, too.