Match ends, Villarreal 2, Barcelona 2.
Barcelona stretched their La Liga lead to nine points, despite throwing away a two-goal advantage at Villarreal.
Barca moved ahead when Ivan Rakitic fired a low shot past several home defenders, pouncing on a loose ball after Lionel Messi's free-kick.
Neymar calmly converted a controversial penalty after he was adjudged to be fouled by home keeper Sergio Asenjo.
But fourth-placed Villarreal fought back through Cedric Bakambu's neat finish and Jeremy Mathieu's own goal.
Barca, who saw nearest rivals Atletico Madrid suffer a shock loss at Sporting Gijon on Saturday, had to settle for a point as they extended their Spanish record unbeaten run to 39 matches in all competitions.
The Catalan side are 10 points ahead of third-placed Real Madrid, who thrashed Sevilla 4-0 later on Sunday.
Villarreal look unlikely to pip Madrid to an automatic Champions League place, but are well equipped to reach the competition's qualifying round after a deserved point against the reigning champions.
They are 12 points adrift of Zinedine Zidane's side, but have a six-point cushion over fifth-placed Celta Vigo.
Both home goals came after Barca boss Luis Enrique reshuffled his defence with the introduction of Mathieu, who replaced the booked Gerard Pique, and right-back Dani Alves.
The visitors appeared vulnerable to further punishment, but regained their composure to see out the final half hour.
However, there were few chances for either side to nick an action-packed game, which saw referee Jose Sanchez infuriate the home crowd with a series of bizarre decisions.
'Positive result for Barca'
Barcelona manager 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.
"It is a positive result for us."
- 1AsenjoBooked at 40mins
- 2Pérez MartínezBooked at 84mins
- 6RuizBooked at 41mins
- 22RukavinaBooked at 43mins
- 18D SuárezSubstituted forPinaat 74'minutesBooked at 78mins
- 14Trigueros MuñozBooked at 85mins
- 21BrunoBooked at 24mins
- 19Castillejo Azuaga
- 9SoldadoBooked at 20minsSubstituted forCarrilho Baptistaoat 83'minutes
- 17BakambuSubstituted forLópez Álvarezat 71'minutes
- 10Carrilho Baptistao
- 20López Álvarez
- 27Marín Gómez
- 28Pedraza Sag
- 20Roberto Carnicer
- 3PiquéBooked at 16minsSubstituted forMathieuat 55'minutes
- 14MascheranoBooked at 90mins
- 18AlbaBooked at 53mins
- 7TuranBooked at 13minsSubstituted forAlves da Silvaat 57'minutes
- 1ter Stegen
- 6Alves da Silva
- 17El Haddadi
- 22Vidal Parreu
- José María Sánchez Martínez
- Shots on Target
Second Half ends, Villarreal 2, Barcelona 2.
Attempt missed. Manu Trigueros (Villarreal) right footed shot from outside the box is close, but misses the top right corner following a set piece situation.
Javier Mascherano (Barcelona) is shown the yellow card for a bad foul.
Hand ball by Javier Mascherano (Barcelona).
Attempt blocked. Bruno (Villarreal) left footed shot from outside the box is blocked.
Attempt missed. Jeremy Mathieu (Barcelona) with an attempt from very close range misses to the left. Assisted by Lionel Messi with a cross following a set piece situation.
Neymar (Barcelona) wins a free kick on the left wing.
Foul by Eric Bailly (Villarreal).
Offside, Barcelona. Luis Suárez tries a through ball, but Neymar is caught offside.
Attempt missed. Luis Suárez (Barcelona) right footed shot from the right side of the box misses to the right. Assisted by Javier Mascherano with a cross.
Hand ball by Samu Castillejo (Villarreal).
Luis Suárez (Barcelona) wins a free kick in the defensive half.
Foul by Eric Bailly (Villarreal).
Luis Suárez (Barcelona) wins a free kick in the attacking half.
Foul by Víctor Ruiz (Villarreal).
Attempt saved. Dani Alves (Barcelona) right footed shot from outside the box is saved in the bottom right corner.
Manu Trigueros (Villarreal) is shown the yellow card for hand ball.
Hand ball by Manu Trigueros (Villarreal).
Mario (Villarreal) is shown the yellow card for a bad foul.