Enes Unal came off the bench to score two late goals for Villarreal, denying Atletico Madrid victory and dealing Diego Simeone's men a huge blow in LaLiga's title race.
Antoine Griezmann's controversial penalty had Atletico on track for a 12th win in 13 games in all competitions, the striker scoring from 12 yards at Estadio de la Ceramica after he was harshly adjudged to be brought down by Jaume Costa.
Jan Oblak had been mostly untested in the Atletico goal but when Alvaro Gonzalez stood up a fine right-wing cross to the back post, Unal was there to nod home a deserved leveller for Villarreal with eight minutes to go.
And in the first minute of added time, Turkey international Unal tucked home at the back post, Daniele Bonera's cross having made its way through a crowded box to find the unmarked striker.
Griezmann had earlier wasted a golden opportunity to secure all three points for Atletico - now 11 points behind Barcelona - the LaLiga leaders having eased to a comfortable 2-0 win at home to Athletic Bilbao earlier on Sunday.
Atleti are winless in their last six league meetings with Villarreal and their title hopes, having been hurt by a narrow loss at Camp Nou earlier this month, now look over as Atleti imploded, Vitolo's stoppage-time red card compounding their misery.
Saul forced a first-minute save from Sergio Asenjo as Atletico made a rapid start.
Griezmann then collected a booking for fouling Roberto Soriano, which means the striker will be available for next month's derby with rivals Real Madrid after serving a one-game ban.
Villarreal had been on top but after Griezmann went down under Jaume Costa's clumsy challenge in the box, Atletico took the lead in the 20th minute.
Griezmann sent Asenjo the wrong way from 12 yards after a long delay, Villarreal's players claiming the France international deceived the officials.
Koke struck the post from Sime Vrsaljko's pullback as Atletico ran through the gears.
But at the other end Villarreal were close to levelling in the 31st minute, Pablo Fornals rifling narrowly wide after robbing Koke on the edge of the visitors' penalty area.
1 - Rodri Hernandez completed 56 of his 58 passes in this first half, at least 31 more than any Atletico player (Koke, 25/29). Helm. pic.twitter.com/F8iUkD6BVA— OptaJose (@OptaJose) March 18, 2018
Villarreal continued to show attacking intent after the break, with Rodri influential in midfield, Mario Gaspar hitting a ferocious 25-yard drive that Oblak collected well on the bounce.
Penalty appeals for an apparent handball in the Atleti box were rejected before the interval and the referee said no again when Jose Gimenez seemed to drag Carlos Bacca to the ground.
Griezmann should have wrapped up the points in the 70th minute when Diego Costa and Angel Correa combined to set up the striker, but he blazed his shot well over the crossbar and was whistled off by the home fans when Simeone substituted him.
That miss came back to haunt Atletico in incredible fashion as Unal struck only eight minutes after his introduction, guiding home a fine header from Gonzalez's right-wing cross.
With Atletico stunned by the equaliser, worse was to come as Bonera's cross was not cleared, Unal finding himself in space to beat Oblak from close range.
Vitolo then saw red for clashing with Nicola Sansone as Simeone's men - beaten 3-0 at Villarreal last season - endured another miserable visit that left their title hopes in tatters.
#VillarrealAtleti | 2-1 FULL TIME | @EnesUnal16 is the hero on @LaLigaEN Matchday 29 for #Villarreal ! He came on and scored a brace to win it for the Yellows! SUPER SUB!!! #Endavant ! pic.twitter.com/2C7Y23DXSE— Villarreal CF English (@Eng_Villarreal) March 18, 2018
Key Opta stats:
- Rodri Hernandez attempted 102 passes against Atletico (93 successfully), his highest ever tally in a LaLiga game.
- Antoine Griezmann has scored his first LaLiga goal against Villarreal, after 14 appearances.
- Enes Unal is the second substitute to score a brace in a LaLiga game against Atletico under Diego Simeone, after Andrija Delibasic with Rayo in September 2012.
- Only Cristiano Ronaldo (17) has scored more goals than Antoine Griezmann (16, level with Messi) in 2018 in all competitions.
- Vitolo is the first Atletico substitute to have been sent off in the same LaLiga game since Alessio Cerci against Valencia in October 2014.
- Atletico have conceded 42.8 per cent of their goals from headers in LaLiga this season (six of 14), the highest percentage of any team.
- Antoine Griezmann has been directly involved in 15 goals in his last nine games for Atletico in all competitions (11 goals and four assists).
- Atletico have won two penalties in their last four LaLiga games, as many as they had in their previous 39.
- This has been the second LaLiga game in which Griezmann has won and scored a penalty, after March 2016 versus Real Sociedad.
|I didn´t convince him, he decided for himself - Guardiola says thanks to Aguero|
|Leno frustrated by Arsenal bench role|
|Joshua almost 2st heavier than Povetkin for Wembley bout|
|From salvation to the record books - Fisher revels in European Tour´s first 59|
|Lahm says Germany best for Euro 2024 as UEFA publishes report|
|Lopetegui backs Modric over Ronaldo for individual prizes|
|Goretzka to start against former club Schalke, confirms Kovac|
|Fisher shoots first 59 in European Tour history|
|Simeone defends Ronaldo after controversial Champions League red|
|Slater sees Storm into Grand Final, awaits fate over ´shoulder charge´|
|Hogg to miss Scotland´s November Tests following ankle surgery|
|Osaka through as Azarenka and Garcia crash out|
|Burgess weighing up legal options after being cleared in Rabbitohs investigation|
|Uncapped Cottrell and Gordon named in Wallabies squad|
|He´s done fantastic work - Mourinho hails Wolves boss Nuno|
|Joshua v Povetkin: No need for fireworks on AJ´s Wembley return|
|Six titles, 204 goals - Aguero´s incredible City career in Opta stats|
|Read to miss Argentina clash, Ioane brothers sign new deals|
|Pedro allays injury fears after Europa League clash|
|Dilly dilly to all the Cleveland fans! Mayfield promises further Browns success|
|Manchester United ´hell´ left Zaha depressed|
|Jackson hesitates in naming Mayfield as Browns´ starting QB|
|LeBron congratulates Browns for ending 635-day winless streak|
|Aguero Extension: 10 of the best goals from the Manchester City star|
|Aguero signs City contract extension until 2021|
|Stress from drink-driving charge may have contributed to Lloris injury – Pochettino|
|CBF backs Cruzeiro´s Dede appeal and suggests VAR investigation|
|The big Friday Premier League quiz|
|Red Sox clinch AL East with win over Yankees|
|Brighton star Knockaert reveals battle with depression|
|Bud Light beer fridges open after Browns snap 19-game winless streak|
|Browns end 635-day drought with first win since 2016 after downing Jets|
|Blue Jays overturn 8-2 deficit in improbable ninth-inning comeback|
|Colo Colo 0 Palmeiras 2: Scolari´s men poised for Libertadores SFs|
|Tour Championship would enhance successful year, says Tiger|
|Pogba: Man United getting better after winning run|
|What bothers me is that he has time to even do that – LeBron responds to Trump tweet|
|Cowboys most valuable NFL team for 12th successive year|
|Mkhitaryan aiming for glory with Europa specialist Emery|
|Sarri: Pedro´s injury is not too serious|
|This Week in U.S. Sports: Drama in Minnesota, a Judge returns and tragedy in Iowa|
|Tottenham will overcome rough patch – Lamela|
|Torreira impresses for Arsenal but leaves with knock|
|Gattuso urges Higuain to be less predictable with his movement|
|Steelers´ Brown: ´Obviously I don´t want to be traded´|
|Woods, Fowler share Tour Championship lead|
|LeBron James backs Serena Williams after US Open controversy|
|Thiem into St Petersburg quarters, but retiring Youzhny bows out|
|Wigan clinch home semi-final with win over Huddersfield|
|Can apologises following sexism accusations|
|De Bruyne expects to be back for Manchester derby|
|Celtic 1 Rosenborg 0: Griffiths late show lifts Hoops|
|Woods eagles 18 to make 65 at Tour Championship|
|Arsenal 4 Vorskla 2: Aubameyang at the double in entertaining triumph|
|Dudelange 0 AC Milan 1: Deflected Higuain goal spares Gattuso´s blushes|
|Birthday boy Rashid inspires Afghanistan to Asia Cup win|
|Sarri feeling sorry for ´unlucky´ Morata|
|Ryder Cup pick Garcia shoots 66 at Portugal Masters|
|Ronaldo, Zidane, Cantona and the most infamous red cards|
|Villarreal 2 Rangers 2: Arfield and Lafferty steal point for Gerrard´s men|
|PAOK 0 Chelsea 1: Willian strikes as Morata misfires|
|Rain delays Ostapenko in Seoul, Wang books Guangzhou semi|
|Pochettino backs Kane to end goal drought|
|We figured it out - 76ers´ Markelle Fultz rebuilds jump shot|
|Joshua: Povetkin my second-toughest fight|
|Relaxed Pochettino not pushing panic button|
|Why Manchester City fans must fix their relationship with the Champions League|
|Majestic Giorgi ends Wozniacki´s reign in Tokyo|
|Pochettino unwilling to risk Alli fitness|
|Bigger Champions League tests to come, warns Pogba|