Bayern Munich slumped to a 3-2 defeat at Bochum to remain eight points behind leaders Bayer Leverkusen.
Thomas Tuchel’s side – who were 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 winger Jamal Musiala.
After Harry Kane blasted over when sent clear in the penalty area, 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 protest of throwing tennis balls from the stands.
Bayern found themselves down to 10 men for the closing stages after defender Dayot Upamecano 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.
Kane reduced the deficit in the 87th minute after being presented with a tap-in by substitute Mathys Tel for his 25th Bundesliga goal.
The England striker sent a header straight at the Bochum goalkeeper during eight minutes of stoppage time as Bayern slumped to a third straight 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 protests from fans – which saw remote-controlled planes flown around the stadium while sweets were thrown onto the pitch behind one of the goals.
When the action resumed, Ansgar Knauff’s second goal of the game had Frankfurt back in front at 3-2 with 20 minutes left, only for Gregoritsch to head in a last-minute equaliser.
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 all 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.
At the other end of the table, the bottom two sides Granada and Almeria cancelled each other out in a 1-1 draw at Los Carmenes.
Marc Pubill had given visitors Almeria a ninth-minute lead, but Myrto Uzuni equalised with 15 minutes left.
In Ligue 1, Mohamed Bamba scored a first-half brace as relegation-battlers 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, with Logan Costa’s late goal securing the points for the visitors, who edged further clear of trouble.
A brace from Martin Terrier saw in-form Rennes beat 10-man Clermont 3-1 and continue their climb up the table.
Africa Cup of Nations winner Oumar Diakite marked his return to club action with a goal as Reims drew 1-1 at home against Lens while Montpellier beat Metz 3-0 at Stade de la Mosson.