Barcelona extended their lead at the top of La Liga to nine points despite blowing a two-goal advantage to draw 2-2 at Villarreal on Sunday.
Ivan Rakitic and a controversial Neymar penalty had Barca on course for a 13th consecutive La Liga win before half-time.
Yet, Villarreal were more than worthy of a point and got their reward after the break through Cedric Bakambu and Jeremy Mathieu’s own goal.
Real Madrid can move to within 10 points of Barca ahead of the meeting between the two sides in two weeks when they host Sevilla later on Sunday.
However, Sevilla also have the chance to close the gap on Villarreal to just three points in the fight for the fourth Champions League place.
“It is a positive result for us,” said Barca boss Luis Enrique.
“The best teams in the league have lost here, we’ve drawn. We were close to winning, but also could have lost.
“It is a positive round of fixtures for us. One less (to go) and one point closer to our objectives.”
The sides held a minute’s silence before kick-off in memory of 13 people killed in a bus crash carrying foreign exchange students in Spain earlier on Sunday.
However, the sombre mood didn’t affect Villarreal’s start as they hit the woodwork inside the first minute when a Manu Trigueros effort was turned towards his own goal by Arda Turan.
Claudio Bravo then blocked Bakambu’s effort from a narrow angle as Barca struggled to contain Villarreal’s pace on the break.
Yet the visitors still struck first with some fortune as Lionel Messi’s free-kick ricocheted off Luis Suarez and fell perfectly into the path of Rakitic to rifle home.
The hosts were then furious when Gerard Pique was pardoned a second yellow card for clearly stopping a Villarreal attack by handling the ball on the ground after just 23 minutes.
Villarreal boss Marcelino was expelled from the touchline for taking his protests too far.
And worse was to come for the hosts when referee Jose Maria Sanchez Martinez pointed to the spot despite Sergio Asenjo clearly playing the ball as Neymar tried to round the goalkeeper.
Neymar put Barca’s recent troubles from the spot behind him to dink home the penalty for his 27th goal of the season.
Pique was replaced by Mathieu early in the second period as Luis Enrique looked to ensure his best defender was not suspended for the game against Madrid just after the international break.
But that proved to be the turning point as Mathieu was constantly caught out.
Bakambu halved the deficit with a simple finish after Bravo had parried Denis Suarez’s initial effort.
Mathieu then gifted Bakambu the ball straight from kick-off, but the Congolese forward tried to tee up Roberto Soldado instead of going for goal himself and Javier Mascherano intercepted.
Soldado then missed a huge chance to level as he haded wide when unmarked from point-blank range.
Asenjo also made a crucial contribution to Villarreal’s comeback with a stunning save to stop Neymar making it 3-1.
Moments later, Villarreal were level when the hapless Mathieu turned a corner into his own net.
Barca regained their composure in the final quarter to ensure their unbeaten run in all competitions stretches to 39.
Asenjo, who only returned from an 11-month injury layoff against Bayer Leverkusen on Thursday, got down well to his left to turn behind Rakitic’s header.
And the Croatian failed to make a good connection when Asenjo’s unconvincing punch landed at his feet seven minutes from time.