Bojan Krkic scored twice in four second-half minutes to earn Barcelona a 2-0 win at Almeria and re-establish their six-point lead at the top of the Primera Liga.
The 18-year-old slotted home the opener in the 53rd minute after Lionel Messi’s effort had come back off a post.
Goals from Sergio Aguero, Diego Forlan and Antonio Lopez cancelled out efforts from Matias Fernandez and Cani.
Defeat was tough on Villarreal, and especially goalkeeper Diego Lopez who kept Atletico at bay almost single-handedly for much of the match and also saved an early penalty from Forlan, but the 65th-minute dismissal of Javi Venta meant Manuel Pellegrini’s side were always up against it.
A first-half brace from Salva Ballesta put Antonio Tapia’s men firmly in control at the interval, but the Rojiblancos fought back with goals from Fredi Kanoute and Luis Fabiano either side of a red card for Malaga full-back Javier Calleja.
Third-placed Sevilla are now six points clear of Villarreal, with Atletico and Malaga both two points further back in the Europa League spots.
Deportivo La Coruna are a point outside the European places after two goals in four second-half minutes earned Sporting Gijon a 3-2 win.
Luis Moran and David Barral with the first of three penalties in the match put Sporting two up after 53 minutes.
Sergio Gonzalez halved the deficit from the spot only for Jose Angel Valdes to net Sporting’s third three minutes later.
Second-half substitute Riki converted a second Depor penalty four minutes from time.
At the other end of the table, 10-man Espanyol showed no little courage as they came from two goals down to claim a 3-3 draw at home to fellow strugglers Real Mallorca.
Juan Arango and Cleber Santana struck either side of a Jose Callejon effort to put the visitors 2-1 ahead.
Espanyol were reduced to 10 men when midfielder Moises Hurtado was sent off with 30 minutes remaining and Mallorca opened up a two-goal cushion through Jose Manuel Jurado.
But Ivan De La Pena immediately pulled a goal back for the home side and Nene clinched a deserved equaliser with eight minutes remaining.
Basement boys Espanyol are a point behind Numancia, who were hammered 5-0 by Racing Santander, with goalkeeper Marian Kelemen enduring a nightmare debut.
All five goals came in a thrilling first 45 minutes, with Oscar Serrano and Nikola Zigic grabbing two apiece and Peter Luccin netting the other.
Osasuna, who were held to a goalless draw at Real Betis, occupy the final relegation place.
Getafe are also in trouble, two points above the drop zone, after they lost 1-0 at Real Valladolid.
Fabian Canobbio scored a late winner, although the game hinged on the dismissal of Mario Alvarez 15 minutes from time.
Madrid were thrashed 4-0 at Liverpool in midweek but were 2-0 up after just 34 minutes on Saturday night through Arjen Robben and Gabriel Heinze.
However, Heinze then put through his own net moments before Fran Yeste was shown a straight red card for a needless push on goalkeeper Iker Casillas.
The home side still managed to draw level in first-half stoppage time through Fernando Llorente, but Real made their numerical advantage count in the second half with a brace from Klaas Jan Huntelaar and a fifth from the penalty spot from Gonzalo Higuain.
Elsewhere, Valencia’s recent slump continued with a disappointing draw against Recreativo Huelva at the Mestalla.
Jaier Camunas put the visitors ahead shortly after half-time and Los Che seemed destined to suffer another embarrassing defeat when Carlos Marchena was dismissed after picking up his second yellow card midway through the second period.
However, substitute Pablo Hernandez spared their blushes with a wonderful solo effort late on as both sides created good chances to clinch the points in a breathless finish.