Barcelona dropped to 10th place in La Liga after going down 1-0 to Atletico Madrid at the Wanda Metropolitano.
Yannick Carrasco scored the winning goal when nutmegging Marc-Andre ter Stegen before slotting home into an empty net.
Barcelona could not find their way back into the match, leaving coach Ronald Koeman once again facing more questions over the direction of his side.
Barcelona's latest defeat was their first against Atletico in 10 years, with Atletico going joint top.
Earlier in the day, Gerard Moreno's late penalty helped secure Villarreal a 1-1 draw with Real Madrid to maintain their unbeaten home record.
Real, looking to respond from the 4-1 defeat at Valencia before the international break, took an early lead through Mariano.
Moreno had missed a couple of opportunities to haul his side level, but made sure of a share of the points when he converted from the spot with 14 minutes left.
Real Madrid captain Sergio Ramos missed out after sustaining a hamstring problem in Spain's 6-0 Nations League win over Germany.
Eden Hazard made a first appearance since November 3 following a positive Covid-19 test.
The visitors were in front after just two minutes at Estadio de la Ceramica when Dominican Republic forward Mariano headed home at the back post. The goal was allowed to stand after a VAR check for a possible offside in the build-up.
Villarreal, who were looking to move top of the table with another home win, went close to an equaliser on 21 minutes.
Moreno floated a ball into the penalty area from the left, but Daniel Parejo sent his free header over the crossbar.
Real Madrid almost went further ahead on 32 minutes when right-back Dani Carvajal drove forwards and drilled an angled shot into the side-netting.
Just before half-time, Mariano's effort hit the post after a quick counter attack, but the offside flag was up.
Real Madrid had another chance to extend their lead five minutes into the second half, but Lucas Vazquez curled his shot over after being picked out by Mariano.
Just before the hour, Villarreal should have been on level terms when the visitors were caught in possession when trying to play out from the back. Manu Trigueros quickly fed Moreno - but his shot was dragged just wide of the far post.
Villarreal boss Unai Emery made a triple change to freshen up the side as Samuel Chukwueze, Yeremi Pino and Pervis Estupinan all came on.
With 20 minutes left, the hosts created another good opening when Ecuador left-back Estupinan got away down the flank and his low cross was met by Parejo - but the veteran former Real Madrid midfielder sent a first-time effort wide.
Villarreal were awarded a penalty in the 75th minute when Thibaut Courtois brought down Chukwueze as the striker raced into the box.
Moreno dispatched the spot-kick past the dive of the Belgian No 1 to draw the home side level.
Villarreal remained on the offensive and Raphael Varane produced a brave block to deny Moreno what looked a certain second goal as the visitors held out for a point.
Bundesliga: Haaland scores four
Erling Haaland scored four goals in a sensational second-half performance to help Borussia Dortmund come from a goal down to crush hosts Hertha Berlin 5-2 and climb to second place in the Bundesliga.
It was a memorable evening for Norwegian Haaland, who notched his first away goals of the campaign and took his season tally to 10 goals in eight matches, one less than top scorer Bayern Munich's Robert Lewandowski.
It was an equally memorable match for teenager Youssoufa Moukoko, who replaced Haaland late in the game to become the youngest-ever Bundesliga player at the age of 16 years and one day.
Haaland struck twice between the 47th and 49th minutes to put his team in front after Matheus Cunha had stunned the visitors with an unstoppable shot from 25 yards in the 33rd.
He completed his hat-trick when he pounced on a Hertha mistake to round the 'keeper and slot in, with the hosts in complete disarray.
Haaland grabbed his fourth after Raphael Guerreiro had also scored for the visitors and Hertha had briefly cut the deficit with a 79th-minute Cunha penalty.
Lacklustre Bayern Munich had to come from behind to rescue a 1-1 draw against Werder Bremen, slipping up for only the second time in their last 35 matches in all competitions but staying a point ahead of undefeated Bayer Leverkusen.
Four days after Germany's stunning 6-0 loss to Spain, there was little in terms of redemption for Bayern's many internationals, with the German champions failing to hit a single shot on target in the entire first half.
Werder took a deserved lead on the stroke of half-time after Josh Sargent set up Max Eggestein who beat 'keeper Manuel Neuer with a well-placed left-footed effort.
Bayern, who had won 33 of their previous 34 games in all competitions, had to wait until the 50th minute for Douglas Costa to rattle the crossbar with a fierce shot and the hosts to show some signs of life.
They upped the pace briefly and Kingsley Coman drew them level, nodding in at the far post in the 62nd but for the next 20 minutes they again dropped back before a couple of late chances for Eric Choupo-Moting and Robert Lewandowski.
The hosts, however, have Neuer to thank for avoiding the second league defeat of the season after he beat Sargent in a one-on-one in the 88th minute.
Bayern are on 19 points, three ahead of RB Leipzig, who are in action later against Eintracht Frankfurt.
Unbeaten Bayer Leverkusen are provisionally second on 18 after their 2-1 win over Arminia Bielefeld, courtesy of Aleksandar Dragovic's 88th-minute winner on the rebound.
Schalke 04 slumped to a 2-0 defeat at home against VfL Wolfsburg and have gone 24 league matches without a win. Schalke, who are edging closer to the all-time winless run of 31 matches in the league set by Tasmania Berlin in 1965/66, are 17th.
Serie A: Immobile helps Lazio move up to fifth
Ciro Immobile became Lazio's joint second top goalscorer in Serie A history as he set his side on their way to a 2-0 victory at Crotone in sodden conditions on Saturday.
The match was in danger of being called off after violent storms and flooding in Calabria, but, after the pitch passed an inspection, Immobile glanced home a 21st-minute header to move onto 107 Serie A goals for Lazio, alongside Giuseppe Signori.
As the rain subsided in the second half, the visitors made sure of the three points in the 58th minute as Joaquin Correa squeezed a shot in from a tight angle.
The win stretches Lazio's unbeaten run to seven in all competitions and moves Simone Inzaghi's side up to fifth in the Serie A standings, while Crotone remain bottom.