Eintracht Frankfurt 2-3 Borussia Dortmund
Borussia Dortmund cut Bayern Munich's lead at the top to six points after coming from two goals down to edge Eintracht Frankfurt in a five-goal thriller at Deutsche Bank Park.
Rafael Borre gave Eintracht a two-goal cushion in the first 24 minutes and Thorgan Hazard pulled a goal back for Dortmund 19 minutes before time.
Jude Bellingham got the equaliser for the visitors three minutes before time and Mahmoud Dahoud snatched the winner in the last minute.
RB Leipzig 4-1 Mainz
RB Leipzig started their year on a high after hammering ten-man Mainz 4-1 thanks to a brace by Andre Silva at Red Bull Arena.
Mainz had a bad start after Alexander Hack was red-carded for a handball inside the box and Silva broke the deadlock for Leipzig from the resultant spot-kick.
Dominik Szoboszlai made it 2-0 for the Red Bulls early in the second stanza and Lee Jae-sung pulled a goal back for Mainz just before the hour-mark.
However, the floodgates opened for the hosts as Christopher Nkunku and another goal by Silva, who got his brace made it 4-1 within four minutes.
Bayer Leverkusen 2-2 Union Berlin
Bayer Leverkusen's winless run extended to four matches after rescuing a draw in a four-goal thriller against Union Berlin at BayArena.
Patrik Schick broke the deadlock for Bayer seven minutes before the half-time break but Grischa Promel levelled matters for the visitors on the stroke of half-time.
Promel gave Union the lead five minutes from the half-time break and got his brace. However, Jonathan Tah snatched the equaliser for Bayer six minutes before time.
Hoffenheim 3-1 Augsburg
Hoffenheim went up to third on the log after thrashing Augsburg 3-1 courtesy of a brace by Ihlas Bebou at PreZero Arena.
Munas Dabbur had a goal for Hoffenheim in the first minute disallowed for a handball and Michael Gregoritsch eventually opened the scoring for Augsburg in the fifth minute.
However, Bebou netted two quick goals for the hosts towards the end of the first stanza to give them a 2-1 lead heading to the half-time break.
David Raum put the game to bed for Hoffenheim in stoppage time.
Freiburg 2-2 Arminia Bielefeld
Freiburg missed the chance to move up to third on the log after they were held to a 2-2 draw by Arminia Bielefeld at Europa-Park Stadion.
Janik Haberer gave Freiburg an early lead and Jeong Woo-yeong doubled their lead just after the half-time break.
Masaya Okugawa pulled a goal back for Arminia on the hour-mark and Bryan Lasme eventually snatched the equaliser for the visitors three minutes before time.
Greuther Furth 0-0 Stuttgart
Stuttgart moved out of the relegation zone despite being held to a goalless draw by Greuther Furth at Sportpark Ronhof Thomas Sommer.
Greuther were the most threatening side in the first stanza but their clearest chance came early in the second stanza, as Branimir Hrgota came close with a strike that was cleared off the line, with the goalkeeper Florian Muller beaten.
Here are some transfers that were already confirmed ahead of the January window!