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.
Yellow Submarine rising again
Villarreal finished in La Liga's top seven every season between 2004 and 2011 - largely under the management of current Manchester City boss Manuel Pellegrini.
With the likes of Diego Forlan and Juan Roman Riquelme, they
reached the 2006 Champions League semi-finals,
in between last-four appearances in the 2004 and 2011 Europa League.
Following financial trouble, they were relegated from the Spanish top flight in 2011-12 before winning instant promotion last term.
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.
- 13 Pinto Colorado
- 02 Montoya
- 18 Alba
- 16 Busquets
- 15 Bartra
- 03 Piqué
- 17 Song (Xavi - 62' )
- 08 Iniesta
- 04 Fábregas (Sergi - 87' )
- 09 Sánchez (Pedro - 84' )
- 11 Neymar Booked
- 05 Puyol
- 06 Xavi
- 07 Pedro
- 14 Mascherano
- 20 Tello
- 24 Sergi
- 25 Olazábal Paredes
- 01 Asenjo
- 02 Perez Martinez
- 18 Costa Jordá
- 04 Pina
- 05 Musacchio
- 16 Dorado Ramírez
- 17 Aquino (Pereira - 74' )
- 28 Ramos Gómez (Uche - 64' )
- 09 dos Santos
- 14 Trigueros Muñoz Booked
- 11 Pérez (Jokic - 69' )
- 03 Jokic
- 07 Perbet
- 08 Uche
- 20 de Abreu
- 24 Pereira
- 25 Sánchez Martínez
- 27 Gómez Bardonado
Ref: Ignacio Iglesias Villanueva