Barcelona slipped five points behind La Liga leaders Real Madrid when Alvaro Vazquez netted a shock late equaliser to snatch a 1-1 draw for Espanyol in the Catalan derby on Sunday.
The champions were looking to improve their patchy away form at their local rivals and stay hard on the heels of Real, who thrashed Granada 5-1 on Saturday.
A gritty Espanyol had prepared a different script and the result leaves Barca on 38 points from 17 matches, with Real on 43. Valencia are third on 34 after they came from two goals down to draw with struggling Villarreal earlier on Sunday.
"The league is not over and I don't think we let a significant part of it slip away tonight," Barca coach Pep Guardiola, whose side are chasing a fourth straight La Liga title, said.
"We have a very strong rival ahead of us but there are still a lot of very tough stadiums to visit," he added.
"All we can do is look at ourselves. Continue doing the things we are doing well and improve those we are not."
Guardiola deployed the team that won 3-1 at Real last month and they looked to be cruising to victory when Cesc Fabregas nodded them in front in the 16th minute at a chilly Cornella-El Prat stadium to take his league tally for the season to nine.
Espanyol battled hard and did well to restrict the Spanish and European champions to one goal before substitute Vazquez struck with a header four minutes from time.
The equaliser stunned Barca into life and centre back Gerard Pique smashed a shot against the crossbar late on before Pedro had a shot cleared off the line, but they were unable to find a winner.
Argentina forward Lionel Messi, widely expected to win a third straight World Player of the Year crown on Monday, had an anonymous match by his standards, although he struck a shot against the post in the second half.
It was Barca's fourth draw in eight away matches this term and they also crashed to a 1-0 reverse at Getafe at the end of the November.
By contrast, they have taken 25 points from a possible 27 at their Nou Camp stadium, scoring 39 goals without reply.
Aritz Aduriz came off the bench to snatch a late equaliser for Valencia as they recovered to draw 2-2 at regional rivals Villarreal earlier on Sunday.
Goals from Marco Ruben and Gonzalo put Villarreal two up by the 18th minute at the Madrigal before Sofiane Feghouli pulled one back just before the break.
Aduriz made the most of a defensive error three minutes from time to secure a draw that leaves Valencia four points ahead of neighbours Levante, who drew 0-0 at home to Real Mallorca on Saturday. Villarreal stay in relegation trouble on 16 points after an erratic and injury-plagued campaign.
Sevilla's bid for a European qualification berth was dealt a blow when they lost 2-1 at Rayo Vallecano and slipped a point behind sixth-placed Malaga.
It was a disappointing debut for Jose Antonio Reyes after the former Arsenal winger sealed a move back to Sevilla, the Andalusian club where he began his professional career, from Atletico Madrid last week.
Athletic Bilbao were held 0-0 at Getafe in the fourth goalless draw of the weekend and improving Real Betis beat Sporting Gijon 2-0 to climb above Atletico into 10th.