Real Madrid moved top of LaLiga after a 2-0 home win over Celta Vigo.
Los Blancos made the most of city rivals Atletico not playing until Sunday as they moved a point clear, albeit having played three matches more.
Lucas Vazquez headed Real in front after just five minutes following a cross from Marco Asensio.
Real doubled their lead in the 54th minute through a swift counter-attack as Vazquez's pass was slotted in by Asensio.
Villarreal are fourth after a 2-1 win over Levante at El Madrigal.
Fernando Nino gave the home side the lead after 19 minutes, with Gerard Moreno firing a second into the bottom corner in the 54th minute.
Sergio Leon's header after 73 minutes set up a tense finale but Unai Emery's side saw out the closing stages.
Sevilla dropped points after they were held to a 1-1 draw at rivals Real Betis and are fifth, although with two matches in hand over Villarreal.
Betis were missing players, including captain Joaquin, following positive Covid-19 tests, and found themselves behind when Sevilla substitute Youssef En-Nesyri helped set up Suso to break the deadlock early in the second half.
The home side, though, were soon level when Sergio Canales equalised with a penalty in the 53rd minute.
Betis then had the chance to go in front with 15 minutes left, but this time Sevilla goalkeeper Bono saved Nabil Fekir's spot-kick.
Elsewhere on Saturday, Shon Weissman's goal late in the first half was enough to give Real Valladolid a 1-0 win at Getafe.
RB Leipzig moved to the top of the Bundesliga with a 1-0 win at Stuttgart.
Julian Nagelsmann's side took full advantage of rivals Bayern Munich not being in action until Sunday as a second-half volley from midfielder Dani Olmo was enough to send them a point clear.
Bayer Leverkusen had earlier missed the chance to keep up the pressure on the leaders after they lost 2-1 at Eintracht Frankfurt.
Nadiem Amiri had put the visitors in front after 10 minutes with a fantastic touch and turn followed by a clever backheel finish through the legs of Frankfurt goalkeeper Kevin Trapp.
The home side, though, equalised in the 22nd minute through a chip from Amin Younes – and turned the match around when Leverkusen defender Edmond Tapsoba diverted a low cross into his own net.
Hertha Berlin inflicted another defeat on bottom club Schalke after cruising to a 3-0 win at the Olympiastadion as new head coach Christian Gross lost his first match in charge.
On-loan Arsenal midfielder Matteo Guendouzi curled in the opener from inside the box after 36 minutes.
Colombian forward Jhon Cordoba added another early in the second half and substitute Krzysztof Piatek wrapped things up late on.
Breel Embolo's goal just before the hour proved enough to give Borussia Monchengladbach a 1-0 victory at Arminia Bielefeld and end their four-match Bundesliga winless run.
In-form Freiburg made it four straight league victories after they ran out 3-1 winners at Hoffenheim.
Baptiste Santamaria put the Black Forest club ahead after seven minutes with an angled finish before Vincenzo Grifo scored his seventh Bundesliga goal of the season from the penalty spot in the 34th minute.
It was 3-0 just before half-time when defender Kasim Adams bundled a cross into the Hoffenheim net for an own goal. Ihlas Bebou scored a consolation goal for the home side in the 58th minute.
Augsburg left it late to win 1-0 at Cologne when defender Iago tapped home from close range in the 77th minute.
Union Berlin won 2-0 at struggling Werder Bremen with first-half goals from Sheraldo Becker (12) and Taiwo Awoniyi (28).