Both sides were level on points before the encounter but the home side got off to the perfect start when Jeremy Perbet struck in the first minute of play.
Jonathan Pereira came off the bench to double Villarreal’s advantage with under half an hour to go. Sergio Garcia’s 80th-minute effort was not enough to rescue a point for the visitors.
Athletic Bilbao moved up to fifth place after two goals in the last 17 minutes to defeat Betis 2-1.
Benat spurned a great chance to break the deadlock for Athletic against his former club when he missed a penalty, and it got worse moments later when Jorga Molina scored to give Betis the lead.
But Oscar De Marcos nodded in a response for the Basque outfit in the 73rd minute, before Mikel San Jose converted another header to complete the turnaround with eight minutes to go.
Athletic remain hot on the heels of Villarreal in fourth, with only two points separating the sides in the table.
Elsewhere, Lisandro Lopez and Alvaro Arroyo struck either side of half-time to give Getafe a 2-0 triumph over Celta Vigo that sees them leapfrog the Galician club in the table.