Borussia Dortmund avoided a major embarrassment at home when it struck three late goals to come from behind and beat 10-man Hoffenheim 3-1 in the Bundesliga on Sunday.
Hoffenheim held on until the 80th minute, before Henrikh Mkhitaryan kicked off Dortmund's rally, with Adrian Ramos and Pierre-Emerick Aubameyang adding the other goals.
Mainz got two goals from Yunus Malli to beat Bayer Leverkusen 3-1 and move past its rival into fifth place.
In the late match, Eintracht Frankfurt hosted Schalke.
Sebastian Rudy's 26th birthday was a mixed affair. The Hoffenheim midfielder put his team ahead in the 26th but then earned a straight red card for hacking down Aubameyang as the last man in the 58th.
Dortmund struggled until the 80th, when Mkhitaryan scored with an angled shot. Substitute Ramos then put Dortmund up for good with a powerful header in the 85th and Aubameyang notched his 22nd league goal in injury time as three Dortmund players broke free in a counterattack.
It was the first defeat in three matches for Hoffenheim's new, 28-year-old coach Julian Nagelsmann. His team remained next-to-last.
With its suspended coach Roger Schmidt watching from a box, Leverkusen lost to an inspired Mainz side, which went ahead through Malli's first goal after an eight-match scoring drought.
Jhon Cordoba doubled the lead before halftime and Malli converted a penalty in 58th after a handball by Tin Jedvaj to secure the win.
Javier ''Chicharito'' Hernandez pulled one back for Leverkusen with a close-range header, his 14th Bundesliga goal, but Mainz saw the match out without problem.
Earlier, Fabian Johnson's goal in the 55th minute earned Borussia Moenchengladbach a 2-2 draw in Augsburg.
The American picked up a back pass from the right and slotted inside the post.
Moenchengladbach took the lead with Raffael's 10th goal of the season. Alfred Finnbogason scored his first Bundesliga goal in the 50th with a header to put Augsburg back into the match and the home side went ahead in the 53rd when Caiuby drilled home after Moenchengladbach failed to clear a corner.
But Johnson replied only two minutes later to salvage the draw in an entertaining match to end his team's four-game losing streak on the road. Augsburg has won only one of its last nine matches at home.
(For more sports news and updates, follow Ahram Online Sports on Twitter at @AO_Sports and on Facebook at AhramOnlineSports.)