An early goal from Turkish striker Enes Unal shocked La Liga leaders Real Madrid as they lost 1-0 at Getafe on Sunday and ended an unbeaten run that had lasted 15 matches in all competitions.
With 46 points from 20 games, Real Madrid are still top but are not as comfortable as before. Sevilla are second with 38 points and two games in hand, and will visit second-from-bottom Cadiz on Monday.
Getafe, led by former Watford manager Quique Sanchez Flores, extended their unbeaten streak in La Liga to six matches and are 16th in the standings, three points above the relegation zone. It was their first win over Real in a decade.
Unal scored with a low, powerful strike in the ninth minute after pressuring Real defender Eder Militao into giving up the ball inside the box.
Barcelona moved up two spots to fifth following a 1-0 victory at Mallorca.
Having sent efforts against a post and then the crossbar in quick succession around the half-hour mark, Luuk De Jong subsequently headed in what proved the winner with a minute of normal time to go before the break.
Barca - missing a host of players due to injury and coronavirus - sealed the three points after Marc-Andre Ter Stegen made a late save to deny Jaume Costa.
Xavi's side are a point behind Atletico Madrid, who earlier rose to fourth with a 2-0 home win over Rayo Vallecano.
Angel Correa notched a brace at the Wanda Metropolitano, scoring in the 28th and 53rd minutes, as Atletico ended their four-match losing streak and pushed Rayo - now sixth - out of the Champions League places.
A point separates Diego Simeone's team and third-placed Real Betis, who are five behind Sevilla.
Los Verdiblancos lost 2-0 at home to Celta Vigo. There was a double for Iago Aspas in that match to take him to 10 goals for the season, scoring a penalty in the 36th minute and adding another finish in first-half stoppage time.
Real Sociedad, down to seventh, were held to a 1-1 draw at third-bottom Alaves after Adnan Januzaj's early opener for the away side was cancelled out by Joselu's spot-kick just before the hour.
Seventeenth-placed Elche, who have the same amount of points as Alaves, hung on to draw 0-0 at home with Granada after having Diego Gonzalez sent off two minutes into the second half.