Dortmund drew at home against Wolfsburg, but nearly won, while Frankfurt scored two goals late to draw against Hertha. Gladbach, Schalke, and Leverkusen all won their games.
Under pressure and at home, Borussia Dortmund hosted Wolfsburg in desperate need of goals and points to accompany the festive time of year. They were rewarded inside the opening ten minutes when their furious pressing ended with Pierre-Emerick Aubameyang sweeping in Ciro Immobile's cross.
Jürgen Klopp's men, as is so often the case, looked more comfortable at home. That early goal looked like it had gone to their heads, though, as they passed up a couple of chances. They soon paid the price for it when Kevin de Bruyne slipped a free kick through a crumbling wall and the flailing hand of Mitch Langerak.
Ciro Immobile was denied a goal for his hardwork in the first half when Diego Benaglio kept out his effort inside the box. In the second half, Mitch Langerak made another excellent save - keeping out Vieirinha - before Dortmund launched an offensive on Benaglio's goal. The Swiss keeper was on hand to keep Dortmund at bay though, leaving the home side frustrated.
Immobile was having one of his best nights in Dortmund colors, but the Italian striker was just without the goal. That changed when the Italian, with Aubameyang open, hammered the ball past Benaglio before celebrating with the home fans and Klopp.
Try as they might, Dortmund couldn't hold on. Unmarked at a corner, Naldo's header left Langerak no chance. It was no defeat and a deserved point in a fantastic game of football, but Dortmund will feel they could have delivered a bigger present to their fans than just one point.
Meier scores late brace in eight-goal draw
Frankfurt dominated possession in the opening quarter of an hour, but it was Hertha who took the lead. A deep free kick and some slack marking left American defender John Anthony Brooks free to sweep home past Timo Hildebrand on the goalkeeper's 300th Bundesliga appearance.
With the fans in the Commerzbank Arena urging their team to equalize, Frankfurt conceded another. Ronny whipped in another set-piece, this time a corner, and Anis Ben-Hatira flicked a smart header in off the far post. Julian Schieber made it 3-0 with a clumsily taken effort, before Stefan Aigner pulled one back before the break to set up a thrilling second half.
Makoto Hasebe sent in a first-time cross that an unmarked Haris Seferovic gobbled up to reduce the deficit to one. Hertha then broke and Schieber was denied by a good save from Hildebrand.
With Frankfurt searching for an equalizer, Hertha were the side to score as the goal swapping continued. Peter Niemeyer flicked on from a free kick and the side from the capital were on their way to a second consecutive win.
Or so they thought. Alex Meier was unmarked and headed as stoppage time ticked over and remarkably, a minute later, Meier scrambled home in the box to level the scores with his 12th goal of the season and 101st Bundesliga strike of his career.
Gladbach comfortable against Werder
A quiet opening half an hour was followed by two goals in six minutes for Gladbach in their game against Werder. Max Kruse converted a penalty after Ibrahima Traore was fouled, before Oscar Wendt's chip deflected off Luca Caldirola to loop over Raphael Wolf.
Werder have only been scoring goals from set pieces recently, but that was enough. Zlatko Junuzovic curled in his third free kick of the season to leave birthday boy Yann Sommer with no chance. With the game hanging in the balance, Max Kruse hung up a cross and Christoph Kramer headed home bravely to restore the home side's two-goal lead.
With Werder's Caldirola sent off after picking up a second yellow, the visitor's challenge was over. Branimir Hrgota stroked home a fourth - his first in the league this season - to add some gloss to the scoreline.
Kiessling's goal beats Hoffenheim, again
For the first time since the infamous ghost goal, Leverkusen returned to Sinsheim to play Hoffenheim. Bernd Leno and Oliver Baumann both made good saves to keep out Roberto Firmino and Stefan Kiessling respectively.
A closely fought encounter saw Omer Toprak clear an Adam Szalai header off the line early in the second half. As the game entered the final ten minutes, Kiessling scored his first goal in five games to once again put Leverkusen ahead away against Hoffenheim.
Hoffenheim surged forward in search of an equalizer, but once again Leno denied Szalai.
Schalke edge Paderborn
The hosts, with the support of a packed 15,000 fans, had the better chances and looked the more determined in the opening half an hour. Rafa Lopez's acrobatic effort in the box hit the post and went agonizingly wide as Paderborn sought an opener.
They found it too when Kaan Ayhaan converted a cross past his own goalkeeper. Sadly though Andre Breitenreiter's side couldn't take their lead into the break - Schalke's in-form winger Eric Maxim Choupo-Moting finally drilling home his ninth of the season after Paderborn failed to clear.
Lukas Kruse made some important saves in the second 45 minutes, but Roman Neustädter's header from a throw-in was one that evaded him and put Schalke into the lead. Elias Kachunga's flick was saved on the line by Ralf Fährmann but Paderborn were left without anything to show for their efforts.