Vinicius Junior scored Real Madrid's opening goal shortly after half-time against Real Sociedad.
Real Madrid stretched their lead at the top of La Liga to eight points on Saturday with a slick 2-0 win over Real Sociedad but the victory was tarnished by an injury to Karim Benzema.
Carlo Ancelotti said Benzema is likely now to miss Tuesday's Champions League game at home to Inter Milan although was hopeful the striker could return to face Atletico Madrid next weekend.
Madrid's eighth consecutive win proved even more valuable after both Atletico and Barcelona lost, with Atleti undone by Mallorca and Barca succumbing to the impressive Real Betis for their first defeat under Xavi Hernandez.
Barcelona stay seventh, now a hefty 16 points behind Real Madrid, while Atletico drop to fourth, six points in front of Barca, but 10 points off the top.
"We have an advantage but the league is still open," said Ancelotti. "We can't think now about winning La Liga, I don't want anyone to think like this."
Barcelona and Atletico will now have to pick themselves up ahead of crunch Champions League group games in midweek.
Barca need to win away at Bayern Munich to guarantee their place in the last 16 and could be without Gavi after the midfielder was taken to hospital with a head injury.
Atletico have to beat Porto in Portugal to even have a chance of going through.
Madrid, meanwhile, face Inter in a decider for first place in Group D, almost certainly without Benzema.
The 33-year-old was forced off in the first half at the Reale Arena with what appeared to be a problem around his left hamstring.
Yet Madrid marched on without their star striker to register another impressive win over high-flying Real Sociedad as Vinicius Junior continued his brilliant run by scoring the opener before Luka Jovic, Benzema's replacement, added a second.
Vinicius' 12th goal of the season came in the 47th minute as he weaved in from the left and played a clever reverse pass into Jovic, who held the ball up and turned it back to Vinicius, who drove in.
Jovic has endured a torrid time since joining Madrid for 60 million euros in 2019 but he could be given a run now in Benzema’s absence. After teeing up Vinicius, he stooped low to head in Casemiro's flick-on from a corner for his first goal of the season.
Xavi had begun with two league wins out of two but even he admitted the results against Espanyol and Villarreal owed a lot to good fortune.
In between, a goalless draw at home to Benfica in the Champions League exposed Barcelona's ongoing problems in front of goal and that was evident against Betis.
Ousmane Dembele, who come on off the bench, posed the greatest threat while the 19-year-old Abde Ezzalzouli missed a golden opportunity to equalise late on, when the ball was cut back to him eight yards out. The youngster blazed over.
In the 79th minute, Betis had showed more composure to finish off a scintillating counter-attack.
Sergio Canales broke free down the right but the move appeared to have lost its momentum when Canales pulled back to Cristian Tello on the edge of the area.
Instead, Tello shifted the ball quickly left to the arriving Juanmi, who took one touch before sliding into the corner.
"That goal annoyed me a lot because we had worked on those situations," said Xavi. "We didn't deserve to lose."
Atletico's 2-1 defeat by Mallorca was even more unexpected, given struggling Mallorca had not won a game since the start of October.
They conceded in the 91st minute and to a Real Madrid player as Japan’s Takefusa Kubo, on loan at Mallorca, raced clear and coolly found the corner.
Franco Russo had headed in Mallorca's equaliser in the 80th minute after Matheus Cunha had prodded Atletico into the lead in the 68th.
"Sometimes it's difficult to find solutions for things that happen repeatedly," said Atleti coach Diego Simeone. "With two shots they scored two goals and that can't happen."
Sevilla climbed to second by beating Villarreal 1-0, with Lucas Ocampos scoring the winner in the first half at the Ramon Sanchez Pizjuan.
Villarreal’s Gerard Moreno was guilty of a dreadful miss in the second after Dani Parejo's chipped ball was played to the back post where Moreno stood, three yards out with the net gaping, but somehow he wafted wide.