Lionel Messi saved Barcelona’s blushes with an injury-time equaliser in a 2-2 draw away at Athletic Bilbao as Real Madrid stretched their lead at the top of the Spanish league with a 7-1 drubbing of Osasuna.
In the rain-hit Basque country Ander Herrera opened the scoring for Athletic only for Cesc Fabregas to pull Barca level on 24 minutes.
When Barca defender Gerard Pique put the ball into his own net with 10 minutes remaining, Athletic looked all set to hand the European champions their first league defeat of the season.
In a frantic finish to the match, however, Messi made the most of a defensive mistake to pounce on a loose ball and score his 14th in the league and first away from the Nou Camp this season.
It means Real, on 28, lead Barcelona (25) by three points with Valencia (24) in third a point further adrift.
The rain had fallen all day in Bilbao but the conditions did not affect the quality of football as both sides looked for the win from start to finish.
Barcelona goalkeeper Victor Valdes had already been called into action by the time Herrera opened the scoring on 20 minutes with a curling left-footed shot after great work from Markel Susaeta down the left.
The advantage lasted only four minutes, Fabregas getting on the end of a left-wing cross from Eric Abidal to equalise with a looping header.
Barca looked the more likely winners with Messi and Andres Iniesta going close before Bilbao got their second. It came with ten minutes remaining from an unfortunate mix-up in the Barcelona defence at a Bilbao corner.
When Abidal tried to clear the ball it rebounded off Fernando Llorente before then hitting Pique and the back of the net.
A similar lack of clarity in the Bilbao defence gave Messi a chance to even the game and the Argentine was well placed to drill the ball low into the corner of the net to salvage a point for the Catalans.
Elsewhere, Diego Castro converted an 82nd penalty to give Getafe a 3-2 victory over Atletico Madrid which lifted them from the last place to 14th. Getafe play with ten men for 73 minutes Alberto Lopo was sent-off early.
Udinese, Lazio on top
Udinese and Lazio leapfrogged Juventus at the summit of Serie A on Sunday after home victories over Siena and Parma coincided with the Bianconeri’s match at Napoli being postponed due to flooding.
A goal in each half from Dusan Basta and Antonio Di Natale kept up Udinese’s 100 percent record at home this season with a 2-1 win over Siena, while a late strike from substitute Giuseppe Sculli gave Lazio a 1-0 victory at home to Parma.
The two sides reached 21 points from 10 games, a point clear of AC Milan and two above Juventus.
With forward Antonio Cassano released from hospital earlier after his minor heart operation, champions Milan won their fifth straight league match by crushing Catania 4-0.