Toni Kroos scored twice as Bayer Leverkusen came back from a 2-1 deficit to beat Borussia Moenchengladbach and head into the winter break at the top of the Bundesliga.
Kroos opened the scoring in the 18th minute before Roel Brouwers equalised and Dante made it 2-1 to the visitors after 54 minutes.
Eren Derdiyko equalised in the 60th minute and Kroos finished off the comeback with the winner nine minutes later. Leverkusen remained the only undefeated team in the Bundesliga but captured just their second victory in the last five games.
"It was a good game considering the weather and the state of the pitch," said Leverkusen coach Jupp Heynckes. "I have to pay my team a compliment for hanging in there in such a difficult situation, to come back and win the match."
Bayern Munich brought their year to a perfect end with a stylish win over Hertha Berlin in snowy conditions in Bavaria. Daniel van Buyten put Bayern ahead in the 16th minute with Mario Gomez adding a second in the 32nd minute and Arjen Robben netting a third a minute later.
Further goals from Thomas Muller and Ivica Olic sealed Bayern's sixth straight win in all competitions, with Adrian Ramos and Raffael replying for Hertha. "This is how I want us to play as Bayern Munich," said coach Louis van Gaal. "We are still there in three competitions and we can now enjoy a relaxed Christmas."
Lucas Barrios gave Borussia Dortmund supporters plenty to celebrate with a lacklustre victory over Freiburg on the 100th anniversary of the foundation of the club. Barrios scored the only goal of the game in the 19th minute as Dortmund collected their fourth straight win.
Defending champions Wolfsburg failed to win for the fifth game running in the Bundesliga as they threw away the lead to draw at Eintracht Frankfurt.
Maik Franz opened the scoring in the 26th minute for Eintracht only to see Edin Dzeko equalise in the 37th minute. Josue gave Wolfsburg the lead after 69 minutes, but Alexander Meier rescued a point for the hosts with a 79th-minute leveller.
Christian Fuchs' late goal completed Bochum's comeback from a two-goal deficit at Hannover for a crucial victory in the fight against relegation from the Bundesliga.
Jan Schlaudraff gave Hannover a 2-0 lead with goals in the sixth and 33rd minutes. Paul Freier pulled a goal back after 52 minutes and Joel Epalle levelled the game two minutes later before Fuchs gave Bochum the victory with his strike in the 86th minute.
In the late game, Stuttgart snapped a nine-game winless streak in the Bundesliga by streaking past 10-man Hoffenheim to finish the first half of the season on a high note.
Ciprian Marica put Stuttgart ahead with his penalty after 32 minutes only to see Maicosuel equalise in the 44th minute. Luiz Gustavo saw red after 52 minutes, before Cacau gave the hosts the lead again in the 68th minute and Sami Khedira scored an own goal eight minutes from time.