Hakan Calhanoglu scored twice as Bayer Leverkusen beat Hertha Berlin 3-1 to move to eighth in the Bundesliga.
Leverkusen took the lead early when Omer Toprak fired past Rune Jarstein and the hosts doubled the advantage when Marvin Plattenhardt handled in the area and Calhanoglu sent Jarstein the wrong way from the spot.
But the Berliners pulled a goal back a minute before the break when Valentin Stocker cashed in on poor defending to beat Bernd Leno from close range.
Javier Hernandez missed three fine chances before Calhanoglu sealed the victory for Leverkusen when he buried a volley a minute from time.
Draw specialists Cologne remain seventh after a 0-0 draw with Mainz to stretch their winless run to six games.
Pablo De Blasis missed the best chance for Mainz, who remain 11th, when he shot wide seven minutes after the break after Yoshinori Muto was denied by Thomas Kessler.
On Saturday, Red Bull Leipzig moved back to within two points of Bundesliga leaders Bayern Munich with a comfortable 3-0 win over Eintracht Frankfurt.
Marvin Compper, Timo Werner and a Jesus Vallejo own goal sealed victory after the visitors had goalkeeper Lucas Hradecky sent off for handling outside the box with just three minutes on the clock.
It was Leipzig’s first win since their 3-0 defeat at Bayern last month, while Frankfurt slip down the table to sixth after extending a worrying run to just one win from their last five league games.
Hoffenheim moved up to third place as they extended their unbeaten run since the start of the season to 17 games with a 2-0 win at Augsburg.
The hosts were made to pay for an early missed chance for Daniel Baier as second-half efforts from Sandro Wagner and substitute Andrej Kramaric sealed victory for Julian Nagelsmann’s side.
Borussia Dortmund went fourth after ending a run of three Bundesliga games without a win with a 2-1 victory at 10-man Werder Bremen.
Andre Schurrle put the visitors ahead after five minutes before home goalkeeper Jaroslav Drobny was sent off in the 39th minute for a professional foul.
Fin Bartels levelled the scores just before the hour mark before Dortmund responded to seal victory through Lukasz Piszczek in the 71st minute.
Mario Gomez scored a late winner as Wolfsburg eased their relegation worries with a 1-0 win over Hamburg, who had Albin Edkal sent off for a second bookable offence in the 33rd minute.
New signing Guido Burgstaller made an immediate impression for Schalke as he came off the bench to score a stoppage-time winner in a 1-0 success over Ingolstadt.
Bottom club Darmstadt 98 started life under new boss Torsten Frings by ending a run of eight consecutive Bundesliga defeats with a goalless home draw against Borussia Monchengladbach.
Robert Lewandowski scored a superb stoppage-time winner as Bayern Munich fought back from a goal down to beat Freiburg 2-1 on Friday night.
Bayern had finished 2016 on a six-match winning streak in all competitions but they looked set to drop points on their return to league action after the winter break until Lewandowski struck right at the death.
The Poland international showed brilliant control and skill to bring down Franck Ribery’s ball into the box before firing a left-footed volley just inside the far post.
That was Lewandowski’s second goal of the match – and eighth in the last six games – having earlier volleyed home from a 36th-minute corner to cancel out Janik Haberer’s fourth-minute opener for Freiburg.