Match ends, Barcelona 2, Villarreal 1.
Neymar made it five goals in two games as Barcelona went three points clear at the top of La Liga with a hard-earned win over Villarreal at the Nou Camp.
The 21-year-old Brazil forward followed up his Champions League hat-trick against Celtic by scoring a penalty after Mario had handled.
Villarreal stunned the Nou Camp by levelling, Mateo Musacchio heading home from a corner.
But Neymar rounded off a week to remember with a close-range finish.
Barcelona move clear of nearest rivals Atletico Madrid, who entertain Valencia on Sunday, after a 23rd successive home league win, a run stretching back to October 2012.
But Gerardo Martino's side were made to work hard by a Villarreal side who will be disappointed they did not come away with a point.
Alex Song had already hit the woodwork when Mario was harshly adjudged to have handled Jordi Alba's 30th minute cross, Neymar sending the goalkeeper the wrong way from the spot.
Sergio Asenjo had little to do until then but the Villarreal keeper produced a fine stop to frustrate Alexis Sanchez five minutes before the interval.
Villarreal, who are fifth in the table after winning promotion last season, levelled three minutes into the second half when Musacchio took advantage of slack marking to head home from a corner. Barcelona were rattled.
Former Tottenham forward Giovani dos Santos went close to giving the visitors the lead before Neymar restored Barca's lead with a simple tap-in after a delightful move involving Alexis and Cesc Fabregas.
The hosts, who are now five points clear of third-placed Real Madrid, finished strongly, with Andres Iniesta denied by another fine save from Asenjo.
- 13Pinto Colorado
- 17SongSubstituted forHernándezat 62'minutes
- 4FábregasSubstituted forRoberto Carnicerat 87'minutes
- 9SánchezSubstituted forPedroat 84'minutes
- 11NeymarBooked at 85mins
- 24Roberto Carnicer
- 25Olazábal Paredes
- 2Perez Martinez
- 18Costa Jordá
- 16Dorado Ramírez
- 17AquinoSubstituted forPereiraat 74'minutes
- 28Ramos GómezSubstituted forUcheat 64'minutes
- 9G dos Santos
- 14Trigueros MuñozBooked at 38mins
- 11PérezSubstituted forJokicat 69'minutes
- 25Sánchez Martínez
- 27Gómez Bardonado
- Ignacio Iglesias Villanueva
- Shots on Target
Second Half ends, Barcelona 2, Villarreal 1.
Attempt blocked. Neymar (Barcelona) right footed shot from the centre of the box is blocked.
Neymar (Barcelona) hits the bar with a right footed shot from the centre of the box. Assisted by Sergi Roberto.
Attempt missed. Pedro (Barcelona) right footed shot from the right side of the box is close, but misses to the right. Assisted by Neymar with a through ball.
Marc Bartra (Barcelona) wins a free kick in the defensive half.
Foul by Ikechukwu Uche (Villarreal).
Foul by Pedro (Barcelona).
Jaume Costa (Villarreal) wins a free kick in the defensive half.
Corner, Villarreal. Conceded by Gerard Piqué.
Substitution, Barcelona. Sergi Roberto replaces Francesc Fábregas.
Gerard Piqué (Barcelona) wins a free kick in the defensive half.
Foul by Jonathan Pereira (Villarreal).
Offside, Barcelona. Neymar tries a through ball, but Jordi Alba is caught offside.
Neymar (Barcelona) is shown the yellow card.
Corner, Barcelona. Conceded by Mario.
Substitution, Barcelona. Pedro replaces Alexis Sánchez.
Corner, Barcelona. Conceded by Sergio Asenjo.
Attempt saved. Andrés Iniesta (Barcelona) left footed shot from outside the box is saved in the bottom right corner. Assisted by Alexis Sánchez.
Corner, Villarreal. Conceded by Martín Montoya.