Real Madrid's faint La Liga title hopes were dealt a huge blow as Samuel Chukwueze's stunning strike secured victory for Villarreal at the Bernabeu.
Chukwueze hit a curled finish late on to leave Real 12 points behind leaders Barcelona, having played a game more.
The hosts had taken the lead through a Pau Torres own goal but Chukwueze slotted in an equaliser.
Vinicius Jr's solo strike put Real ahead but Jose Luis Morales equalised before Chukwueze stunned the hosts.
With just 10 La Liga games remaining, Real would need a strong finish to the season and an unlikely Barcelona collapse to defend their title.
Real thought they had an opportunity for a late equaliser when they were awarded a penalty after the referee felt Aissa Mandi handled the ball as he fell to the ground inside his own box.
However, Javier Alberola Rojas overturned that decision after going to the pitchside monitor following a VAR review.
The win moves Villarreal up to fifth in the table, four points off the top four.
Barcelona, meanwhile, could move 15 points clear at the top when they host Girona on Monday.
๐ฆ๐ฒ๐บ๐ฎ๐๐ผ๐ฐ๐ถ๐ฎ๐น ๐ถ๐ ๐๐ต๐ฒ๐ฟ๐ฒ ๐ฟ๐ฒ๐ฎ๐น ๐ฝ๐ฒ๐ผ๐ฝ๐น๐ฒ ๐ฐ๐ผ๐ป๐ป๐ฒ๐ฐ๐, ๐ด๐ฟ๐ผ๐, ๐ฎ๐ป๐ฑ ๐ฏ๐ฒ๐น๐ผ๐ป๐ด. Weโre more than just a social platform โ from jobs and blogs to events and daily chats, we bring people and ideas together in one simple, meaningful space.