Lionel Messi scored a sublime last-minute free-kick to salvage a point for Barcelona and deny Villarreal a famous win on Sunday.
Nicola Sansone fired the hosts ahead, a low angled finish after ex-Chelsea loan signing Alexandre Pato’s threaded pass.
Messi hit a post and Barca were denied a penalty when Bruno handled a shot by the Argentina forward, before Messi’s brilliant set-piece goal.
Barca stay third in the table and trail leaders Real Madrid by five points.
Villarreal, who remain fifth in La Liga, had full-back Jaume Costa sent off close to full-time after a second yellow card.
Damaging start to 2017 for Barca
Despite Messi’s late heroics, this was a damaging result for Barcelona, who have played one more game than Real, in their first league game after the winter break.
Luis Enrique is unlikely to remember his 150th game in charge of Barca for long, with his side sluggish for long periods.
Luis Suarez and Neymar wasted good chances, while the visitors were caught out at the back as Villarreal scored after a slick counter.
Barca were guilty of giving the ball away cheaply deep inside Villarreal’s half before Pato’s threaded pass found Sansone, who kept his composure to beat keeper Marc-Andre ter Stegen.
Suarez remains on 99 goals for Barca after a frustrating match in which he was presented with several chances to score the landmark goal.
Villarreal were getting ready to celebrate a first win in nine years against their opponents when Messi, who had been fouled by Bruno, found the top corner with an exquisite finish to rescue a point.
The result leaves Real Madrid, 5-0 winners over Granada on Saturday, with a clear advantage over their bitter rivals.