RB Leipzig were denied second place in the Bundesliga as Krzysztof Piatek struck an 82nd-minute penalty for Hertha Berlin in a 2-2 draw.
Liverpool loanee Marko Grujic had given Hertha a ninth-minute lead with a well-struck volley but Lukas Klostermann levelled midway through the half with a glancing header.
Leipzig had Marcel Halstenberg dismissed for a second bookable offence just after the hour but led thanks to a horrible goalkeeping error from Rune Jarstein, who fumbled Patrik Schick's shot five minutes later.
But Piatek had the final word after former Everton man Ademola Lookman fouled Matheus Cunha.
The draw keeps Leipzig in third, two points behind Borussia Dortmund following their 1-0 defeat to Bayern Munich on Tuesday.
Fortuna Dusseldorf piled the pressure on Schalke boss David Wagner with a 2-1 win that eased their own relegation worries.
Schalke, without a win since January, saw their frustrations deepen as they allowed Dusseldorf to come from behind in a 2-1 defeat – with the aid of more poor goalkeeping from Markus Schubert.
Wagner's side led through Weston McKennie's 53rd-minute header, but 10 minutes later Schubert was at fault as he failed to deal with Kevin Stoger's free-kick and Rouwen Hennings headed in.
And five minutes later, Kenan Karaman headed in following a corner to give Uwe Rosler's side all three points.
Hoffenheim are on the fringes of the European places after a 3-1 win over Cologne in which both sides finished with 10 men.
Christoph Baumgartner put Hoffenheim ahead 11 minutes in and Cologne's problems grew when Sebastiaan Bornauw was dismissed in the 26th minute.
Baumgartner doubled the lead in the first minute of the second half and Steven Zuber added another two minutes later.
Hoffenheim captain Benjamin Hubner was the next to see red, five minutes into the second half, helping Cologne get a goal back through Florian Kainz but there would be no comeback.
Ridle Baku ended a run of 40 Bundesliga games without a goal as he put Mainz in front at Union Berlin, but the match ended in a draw as Marcus Ingvartsen's free-kick levelled things up.
Union played more than half the match with 10 men as Robert Andrich was booked twice before the break. Augsburg and Paderborn shared the points following a goalless draw.