La Liga leaders Atletico Madrid were beaten for the first time in 12 games as they suffered a shock 2-0 home loss to Levante.
Diego Simeone’s men fell behind through a Mario Hermoso own goal on the half-hour mark, and substitute Jorge De Frutos added the second in stoppage time for Levante, who are up to eighth.
Atletico’s lead at the top was then cut to three points later on Saturday as Real Madrid won 1-0 at Real Valladolid.
Casemiro’s 65th-minute header secured the victory for Real, who have played a game more than their city rivals.
Dani Calvo headed a first-half winner as Elche beat fellow strugglers Eibar 1-0 at home. Both sides are now on 21 points, with Elche – who have played two games fewer – lying 18th and Eibar 17th. Valladolid, in 19th, also have 21.
Valencia beat Celta Vigo 2-0 at home, with Manu Vallejo and Kevin Gameiro both scoring in stoppage time after the visitors had goalkeeper Ruben Blanco sent off in the 64th minute.
There was also defeat on Saturday for the Bundesliga table-toppers as Bayern Munich lost 2-1 at Eintracht Frankfurt.
Daichi Kamada and Amin Younes scored for the fourth-placed hosts in the first half. Robert Lewandowski netted his 26th league goal of the season early in the second, but the champions were unable to salvage anything from the contest.
Bayern are five points ahead of second-placed RB Leipzig, who travel to Hertha Berlin on Sunday.
Erling Haaland netted a brace, with Jadon Sancho and Raphael Guerreiro also on the scoresheet as Borussia Dortmund won 4-0 at basement boys Schalke.
Second-bottom Mainz’s survival prospects were boosted by a 2-1 victory at Borussia Monchengladbach.
Kevin Stoger scored a late winner after Karim Onisiwo’s early opener was cancelled out by Lars Stindl.
Union Berlin won 1-0 at Freiburg thanks to Grischa Promel’s first-half effort, and it was the same scoreline as Stuttgart triumphed at Cologne, with Sasa Kalajdzic on target.
In Serie A, Lazio rose to fourth with a 1-0 home win over Sampdoria, with Luis Alberto netting midway through the first half.
Sassuolo drew 1-1 at home with Bologna, Francesco Caputo equalising early in the second half after the visitors took the lead via Roberto Soriano, then had Aaron Hickey sent off.
Milan Badelj scored a second equaliser for Genoa in stoppage time as they drew 2-2 at home with Hellas Verona. Eldor Shomurodov had earlier cancelled out Ivan Ilic’s opener, before Davide Faraoni put the away side back in front.
In Ligue 1, Marseille drew 1-1 at Nantes, Dimitri Payet levelling for OM after Ludovic Blas’ goal early in the second half. Marseille had Hiroki Sakai sent off in stoppage time.
Charles Abi’s 89th-minute goal earned St Etienne a 1-1 draw against Reims, who had led through El Bilal Toure.