Barcelona went back atop the Spanish Liga by beating historic rivals Real Madrid in a tense but high-quality “Clasico”.

Supersub Zlatan Ibrahimovic scored the crucial goal for Barca, who had Sergio Busquets sent off 27 minutes from time.

Real dominated the first half but lost penetration when Cristiano Ronaldo limped off 25 minutes from the end. Barca defenders Carles Puyol and Gerard Pique were imperious, keeping the white attack at bay.

Lassana Diarra was sent off right at the end; just as Real were losing hope of an equaliser.

A capacity 98,000 crowd in the Camp Nou cheered Barca to a victory that was followed across Planet Football, with more than 120 countries taking the live television coverage.

The tight win leaves Barca with 30 points from 12 games, two points more than Real.

Sevilla are third on 26 and Valencia fourth on 25.

“I am really happy,” Ibrahimovic said in a euphoric mix of Spanish and Italian. “To score this goal was just fantastic for me.”

Barca coach Josep Guardiola said: “To beat Madrid has a lot of merit, because they are an excellent team. ... Player for player, their level is very high.”

He added that “the fans also like to see us win like this, with character and effort.”

Guardiola gave out special praise to veteran captain Puyol, calling him “impeccable, as if he was 20 years old”.

Real goalkeeper Iker Casillas said: “A draw would have been a fairer result, given the chances that we had.”

Manuel Pellegrini, the Real coach, went even further than Casillas, raising eyebrows by claiming: “We were superior to them in everything, except in scoring. ... The result does not reflect how the game went.”

Barca started with Ibrahimovic on the bench because of his thigh strain. Real, in contrast, started with Cristiano Ronaldo despite his long injury lay-off.

The Portuguese winger did not look completely fit, yet he almost silenced the Camp Nou in the 20th minute with a low drive that Barca keeper Valdes kept out with his right foot.

In the 52nd minute, Guardiola brought on Ibrahimovic for the ineffective Thierry Henry — and was immediately rewarded with the only goal.

In the 57th minute, Dani Alves found Ibrahimovic with a precise, long centre, and the unmarked Swede calmly volleyed home with his left foot.

Six minutes later, Busquets foolishly picked up a second yellow card for handball. A man down, Barca were forced to play on the break.

Even so, Messi — turning in another dull display — almost made it 2-0 right at the death, only to be foiled by Casillas. Then Diarra was sent off — and Real were looking at their second league defeat of the season.

More In: Football | Sport