Bayern Munich slumped to a 3-2 defeat at Bochum to remain eight points behind leaders Bayer Leverkusen, increasing the pressure on manager Thomas Tuchel.
The German giants – beaten 1-0 at Lazio in the first leg of their Champions League last-16 tie on Wednesday night – had taken the lead in the 15th minute through Jamal Musiala.
After Harry Kane blasted over when clear, the match was halted in the 22nd minute as tennis balls were thrown onto the pitch in another protest by supporters against a controversial plan to sell a stake in Bundesliga media rights.
Once the game resumed, Bochum equalised in the 38th minute through Japan forward Takuma Asano before Keven Schlotterbeck headed in from a corner just before the break.
The players were taken off again early in the second half following another fan protest, before Bayern were reduced to 10 men when defender Dayot Upamecano – having also been sent off in midweek – was shown a red card for raising his arm into the face of Schlotterbeck in the area. Kevin Stoger made no mistake from the resulting penalty to make it 3-1.
Kane reduced the deficit in the 87th minute when he tapped in his 25th Bundesliga goal but the England captain was unable to convert a stoppage-time header from close range as Bayern slumped to a third successive defeat.
Earlier on Sunday, Michael Gregoritsch’s late equaliser saw Freiburg fight back to draw 3-3 against Eintracht Frankfurt at the Europa-Park Stadion.
Play was halted midway through the second half because of more protests from fans – which saw remote-controlled planes flown around the stadium while sweets were thrown onto the pitch behind one of the goals.
LaLiga leaders Real Madrid were held to a 1-1 draw by lowly city neighbours Rayo Vallecano.
Los Blancos, without Jude Bellingham through injury, had taken an early lead through Joselu and looked set to go eight points clear of Girona, who play at Athletic Bilbao on Monday night.
However, a 27th-minute penalty from Raul de Tomas proved enough for Rayo to earn a derby point in their first match under new boss Inigo Perez, with Real having Dani Carvajal sent off late on.
Real Betis dropped out of the top six after being held to a goalless draw at home by Alaves.
Real Sociedad secured a first victory in six matches after coming from behind to win 2-1 at 10-man Mallorca thanks to a stoppage-time header from Mikel Merino, the hosts having seen captain Antonio Raillo sent off just before the break.
At the other end of the table, the bottom two sides Granada and Almeria cancelled each other out in a 1-1 draw.
AC Milan missed the chance to go second in Serie A as they slumped to a 4-2 defeat at neighbours Monza, finishing with 10 men after Luka Jovic was sent off.
After Monza goalkeeper Michele Di Gregorio had to be substituted following a clash of heads with team-mate Andrea Carboni, the hosts took the lead through Matteo Pessina’s penalty and Dany Mota added a second just before half-time.
Jovic was sent off six minutes into the second half, his yellow card upgraded to a red on VAR review, for lashing out at Armando Izzo.
Substitutes Olivier Giroud and Christian Pulisic then hauled the Rossoneri level – only for Warren Bondo to swiftly put Monza ahead again before on-loan forward Lorenzo Colombo added a fourth against his parent club.
Bologna had earlier kept up their challenge for the Champions League places after Joshua Zirkzee’s late goal gave them a 2-1 win at Lazio.
Roma won 3-0 at Frosinone to maintain their ambitions of a top-six finish.
Relegation-battlers Cagliari drew 1-1 at Udinese and it also finished 1-1 between Empoli and Fiorentina.
In Ligue 1, Brest beat Marseille 1-0 with an 89th-minute goal from Pierre Lees-Melou after forward Steve Mounie had been sent off to move above Nice into second place.
Mohamed Bamba scored a first-half double as Lorient won 3-1 at Strasbourg to move out of the drop zone.
Monaco saw their top-four ambitions dented with a 2-1 home defeat by Toulouse, while a brace from Martin Terrier saw in-form Rennes beat 10-man Clermont 3-1.
Africa Cup of Nations winner Oumar Diakite marked his return to club action with a goal as Reims drew 1-1 with Lens while Montpellier beat Metz 3-0.