Bundesliga leaders Bayern Munich had two men sent off as they were held to an eventful 1-1 draw at Bayer Leverkusen.
Aleix Garcia gave the hosts a half-time lead at BayArena, with Nicolas Jackson dismissed for a dangerous tackle on Martin Terrier just before the break.
Luis Diaz levelled the scores but picked up a second yellow card for diving in the closing minutes as Vincent Kompany's table-toppers saw their seven-match winning run across all competitions come to an end. Jonas Hoffman thought he had won it for Leverkusen in added time but VAR spared Bayern.
Borussia Dortmund pruned their rivals' hefty lead from 13 points to 11 as they beat Augsburg 2-0. Karim Adeyemi and Luca Reggiani scored in either half to secure the result for Niko Kovac's side.
Bottom club Heidenheim went down 1-0 at Eintracht Frankfurt, despite Robin Koch's dismissal, Hoffenheim drew 1-1 with Wolfsburg and Hamburg were held by the same scoreline against Cologne.
Real Madrid swept aside Elche 4-1 at the Bernabeu to move within a point of La Liga leaders Barcelona, who play on Sunday.
Federico Valverde followed up his Champions League hat-trick by hitting the target again after Antonio Rudiger got the ball rolling. Dean Huijsen and Arda Guler also scored - a phenomenal effort from well inside his own half - with the consolation coming from a Manuel Angel own goal.
A blockbuster strike from Nahuel Molina was enough for Atletico Madrid to see off 10-man Getafe and go third.
Molina grabbed the only goal of the game in the eighth minute, winning possession on the left wing before finding the top corner with a brilliant long-range effort. Abdel Abqar's red card early in the second half undermined Getafe's hopes but Atleti still needed Juan Musso's late save from Adrian Liso.
Bottom club Real Oviedo landed a first victory since 31 January, David Costas sealing a 1-0 result over Valencia.
Girona returned to form with a resounding 3-0 win over Athletic Bilbao. Winless in three since last month's surprise win over Barca, they saw goals from Hugo Rincon, Azzedine Ounahi and Claudio Echeverri go unanswered.

Serie A leaders Inter had to settle for a 1-1 draw with Atalanta at the San Siro.
Pio Esposito (above) put the pace-setters ahead in the 26th minute but the advantage did not hold, Nikola Krstovic netting with eight minutes left. Despite a disappointing follow-up to their defeat in the Milan derby, they remain eight points clear.
Third-placed Napoli came from behind to defeat Lecce 2-1. Jamil Seibert hit the early opener, with Rasmus Hojlund and Matteo Politano completing the second-half turnaround.
Juventus returned to the top four after Jeremie Boga sealed a 1-0 win away to Udinese.
Lens missed the chance to snatch the Ligue 1 summit from Paris Saint-Germain after a 2-1 loss at Lorient.
Tosin Aiyegun won it for the mid-table hosts after their opener from Bamba Dieng had been cancelled out by Odsonne Edouard. Defeat means PSG retain their one-point buffer with a game in hand. Nice and Monaco both won 2-0, defeating Angers and Brest respectively.