Real Madrid fell further adrift of La Liga's top three as a late show saw Villareal snatch a 1-0 victory on Saturday.
Cristiano Ronaldo missed two big chances in the first half, but Villarreal didn't buckle under the pressure and left the Santiago Bernabeu with all three points thanks to Pablo Fornals' delightful chip near the death.
Only Sergio Ramos and Karim Benzema were missing from Madrid's XI, while a personnel crisis for Villarreal saw them take to the field without Nicola Sansone, Roberto Soriano, Ruben Semedo, Bruno Soriano, Victor Ruiz and new boy Roger Martinez.
Los Blancos had won all of their previous meetings with the Yellow Submarine at home in La Liga, and the offside flag prevented their strong start from being rewarded as Gareth Bale was a yard in front of his marker when he nodded in.
Ronaldo came into the match with only four League goals to his name, and he failed to add to his tally against Villarreal, although Asenjo had to tip a thunderous free kick from the Portuguese on to his crossbar.
The No 7 was then guilty of squandering a pair of gilt-edged chances, clipping wide a one-on-one with Asenjo and dinking into the goalkeeper's palms from a yard out.
Bale then curled a strike just off-target and Toni Kroos crashed a first-time volley at goal, but Villarreal were still in with a shout and should've taken the lead through former Blanco Denis Cheryshev, who had only Keylor Navas to beat yet slotted wide.
Villarreal grew as the second half wore on, despite Carlos Bacca not making either of his snapshots count, and with Madrid struggling to sustain any pressure, Zinedine Zidane threw on Marco Asensio and Lucas Vazquez.
However, Los Merengues were caught out and Cheryshev's saved shot fell to Fornals, who perfectly dinked the rebound over Keylor and co. from the edge of the box to leave them potentially 19 points behind arch-rivals Barcelona.
Real Madrid 0-1 Villarreal
Real Madrid: Keylor; Carvajal, Varane, Nacho, Marcelo; Modric, Casemiro, Kroos; Isco (Vazquez 70); Bale (Asensio 70), Ronaldo
Villarreal: Asenjo; Mario, Bonera, Alvaro, Jaume; Raba (Cheryshev 46), Trigueros, Rodri, Castillejo (Rukavina 83); Fornals; Bacca (Enes 76)
Referee: Undiano Mallenco