Real Madrid slipped to just a second La Liga defeat of the season as they missed the chance to go back to the top of the table by losing at Villarreal.
Yeremy Pino put the hosts ahead but a dubious handball call against Juan Foyth allowed Karim Benzema to level.
Foyth then won a penalty of his own at the other end as David Alaba handled and Gerard Moreno slotted the winner.
Real remain second, level on points with leaders Barcelona, who visit Atletico Madrid on Sunday.
Villarreal climb to fifth after a deserved third successive win, having created the better chances throughout an entertaining affair Estadio de la Ceramica.
Alex Baena went close on several occasions during a first half the hosts bossed, while Francis Coquelin hit the post with a cheeky backheel from Moreno’s cross.
Benzema fashioned Real’s best first-half opening with a cushioned first-time pass on the volley for Vinicius Jr but the Brazil forward was denied by veteran keeper Pepe Reina.
Ferland Mendy’s misplaced pass led to Pino firing Villarreal ahead early in the second half but after a ball over the top grazed Foyth’s hand, the referee awarded a penalty upon viewing the pitchside monitor.
Benzema converted his 227th La Liga goal to move joint sixth in the all-time top scorers’ list, alongside Real legend Alfredo di Stefano.
But any injustice the hosts felt soon disappeared as Alaba slipped and handled Foyth’s low pass as he put his hand on the ground to steady himself, with Moreno coolly sending Thibaut Courtois the wrong way from the spot after vociferous Real appeals finally died down.
Line-ups
Villarreal
Formation 4-3-3
- 1Reina PáezBooked at 90mins
- 8Foyth
- 3AlbiolBooked at 75mins
- 4P TorresBooked at 16mins
- 18MorenoSubstituted forPedrazaat 72′minutes
- 19CoquelinSubstituted forTrigueros Muñozat 89′minutes
- 10Parejo
- 16Baena RodríguezBooked at 90mins
- 11Chukwueze
- 7MorenoSubstituted forDanjumaat 88′minutes
- 21PinoSubstituted forMoralesat 81′minutes
Substitutes
- 2Femenía
- 5Cuenca
- 9Danjuma
- 12Mojica
- 14Trigueros Muñoz
- 20Morlanes Ariño
- 22Morales
- 23Mandi
- 24Pedraza
- 35Jörgensen
Real Madrid
Formation 4-3-3
- 1Courtois
- 3Militão
- 22Rüdiger
- 4Alaba
- 23MendySubstituted forRodrygoat 64′minutes
- 8Kroos
- 18TchouaméniSubstituted forVázquezat 64′minutes
- 10ModricSubstituted forCamavingaat 70′minutesBooked at 90mins
- 15ValverdeSubstituted forAsensioat 82′minutes
- 9Benzema
- 20Vinícius Júnior
Substitutes
- 5Vallejo
- 6Nacho
- 7E Hazard
- 11Asensio
- 12Camavinga
- 13Lunin
- 17Vázquez
- 19Ceballos
- 21Rodrygo
- 26López Andúgar
- Referee:
- César Soto Grado
- Attendance:
- 21,088
Live Text
-
Match ends, Villarreal 2, Real Madrid 1.
-
Second Half ends, Villarreal 2, Real Madrid 1.
-
Attempt missed. Arnaut Danjuma (Villarreal) right footed shot from more than 35 yards is close, but misses to the left. Assisted by Samuel Chukwueze following a fast break.
-
Corner, Real Madrid. Conceded by Raúl Albiol.
-
Eduardo Camavinga (Real Madrid) is shown the yellow card for a bad foul.
-
Foul by Eduardo Camavinga (Real Madrid).
-
Álex Baena (Villarreal) wins a free kick on the left wing.
-
Attempt saved. Arnaut Danjuma (Villarreal) right footed shot from the left side of the box is saved in the centre of the goal. Assisted by Alfonso Pedraza.
-
Pepe Reina (Villarreal) is shown the yellow card.
-
Attempt missed. Karim Benzema (Real Madrid) right footed shot from the right side of the six yard box misses to the right. Assisted by Lucas Vázquez.
-
Álex Baena (Villarreal) is shown the yellow card for a bad foul.
-
Eduardo Camavinga (Real Madrid) wins a free kick in the defensive half.
-
Foul by Álex Baena (Villarreal).
-
Attempt saved. Antonio Rüdiger (Real Madrid) header from the centre of the box is saved in the centre of the goal. Assisted by Toni Kroos with a cross.
-
Attempt missed. Arnaut Danjuma (Villarreal) right footed shot from the centre of the box misses to the right following a corner.
-
Attempt blocked. Pau Torres (Villarreal) header from the centre of the box is blocked. Assisted by Daniel Parejo with a cross.
-
Corner, Villarreal. Conceded by Thibaut Courtois.
-
Attempt saved. Samuel Chukwueze (Villarreal) left footed shot from the right side of the six yard box is saved in the bottom right corner. Assisted by Arnaut Danjuma.
-
Attempt blocked. Arnaut Danjuma (Villarreal) left footed shot from the centre of the box is blocked. Assisted by José Morales.
-
Substitution, Villarreal. Manu Trigueros replaces Francis Coquelin.