Gerard Pique saw red in his last ever game despite not even playing as 10-man Barcelona came from behind to beat Osasuna 2-1 and extend their advantage at the top of LaLiga.
Pique, named among the substitutes after announcing last week this would be his final match before retirement, was sent off at half-time for remonstrating with referee Jesus Gil Manzano.
At that stage, his side were trailing to David Garcia’s sixth-minute header, and had seen Robert Lewandowski sent off for a second bookable offence with half an hour gone.
But Pedri fired Barca level three minutes into the second half and Raphinha headed in Frenkie de Jong’s cross to win it with five minutes gone, sending Barca five points clear before Real Madrid host Cadiz on Thursday.
Girona came from behind to win 2-1 away to Elche.
Pol Lirola fired the hosts in front after 18 minutes but Ivan Martin headed Girona level six minutes before the break and Valentin Castellanos got the winner midway through the second half.
A brace from Gorka Guruzeta helped Athletic Bilbao to a 3-0 win over Real Valladolid. Guruzeta scored in each half but Dani Vivian made sure with 12 minutes left.
Serge Gnabry scored a hat-trick as Bayern Munich moved four points clear at the top of the Bundesliga with a 6-1 rout of Werder Bremen.
Jamal Musiala fired in his ninth league goal of the season with just six minutes gone, and although Anthony Jung equalised moments later, there would be no denying Bayern a fifth straight win as they ripped through the visitors with three goals in six minutes.
Gnabry got the first with a curling effort in the 22nd minute before Leon Goretzka added another and Gnabry was set up by Leroy Sane to score again.
Gnabry completed his hat-trick with eight minutes left before Mathys Tel completed the scoring.
Second-placed Freiburg can cut the gap when they face RB Leipzig on Wednesday.
There was frustration for fourth-placed Borussia Dortmund as they lost 2-0 to a Wolfsburg side now unbeaten in seven.
Micky van de Ven headed the hosts in front just six minutes in and that stood until Lukas Nmecha finished from close range in stoppage time.
Konstantinos Mavropanos scored eight minutes into stoppage time to give Stuttgart a 2-1 win over Hertha Berlin, who had cancelled out Serhou Guirassy’s third-minute goal through Dodi Lukebakio midway through the first half.
Early goals from Christopher Antwi-Adjei and Philipp Hofmann set Bochum on their way to a 2-1 win over Borussia Monchengladbach, who pulled one back through Alassane Plea.
Napoli stretched their lead at the top of Serie A with a 2-0 win over Empoli as AC Milan were held goalless away to Cremonese.
Hirving Lozano’s 69th-minute penalty put Napoli in front after Razvan Marin fouled Victor Osimhen.
After Empoli lost Sebastiano Luperto to a second yellow card, Piotr Zielinski got Napoli’s second late on.
Udinese drew at Spezia after Sandi Lovric’s goal two minutes before half-time cancelled out Arkadiusz Reca’s opener for the hosts.