Bayer Leverkusen kept up its pursuit of Bundesliga leader Bayern Munich, reducing the deficit to nine points with a 3-0 home win over Hamburg on Saturday afternoon.
Two goals from the league's top scorer, Stefan Kiessling, and one from Andre Schurrle earned the side coached by Sami Hyypia and Sascha Lewandowski all three points.
The win guaranteed Leverkusen second spot going into 2013 -- albeit some distance behind Bayern, which drew 1-1 at home to Borussia Monchengladbach on Friday.
Eintracht Frankfurt ended the year on a high note, toppling Wolfsburg 2-0 at the VW-Arena to move into third place going into the winter break.
Schalke's poor recent form continued as it ended the year with a 3-1 defeat at home to Freiburg, extending its winless run to six matches and increasing the pressure on under-fire coach Huub Stevens.
Despite taking the lead through Jefferson Farfan in the 20th minute, the Royal Blues fell to two goals from Jan Rosenthal and an Oliver Schmid effort as Freiburg moved above them in the end-of-year standings.
Rosenthal and Schalke striker Klaas Jan Huntelaar were both sent off in the final 10 minutes but there were no further goals, meaning Freiburg climbed to fifth and Schalke slipped to seventh.
Mainz came from behind to beat Stuttgart 3-1 at the Coface Arena to move above its opponents and into the top six.
Martin Harnik was credited with Stuttgart's opening goal, although Mainz goalkeeper Heinz Muller helped turn the forward's header into his own net in the 48th minute.
The home side responded well with a brace from Nicolai Muller before Elkin Soto wrapped up victory with the last kick of the game.
A delightful free kick from Ken Ilso earned Fortuna Dusseldorf a 2-1 home win over Hannover, which lifted Norbert Meier's men nine points clear of the drop zone.
Dani Schahin gave the hosts the lead before halftime, but Mame Diouf brought the Reds level in the 69th minute. The game could then have gone either way before Ilso stepped up to curl in a 25-yard free kick in the 83rd minute to send the 48,000 fans in the Dusseldorf Arena wild with joy.
Finally, the Bavarian derby between Greuther Furth and Augsburg ended 1-1 and with both sides a man down, as the hosts missed their last chance to pick up a home Bundesliga victory in 2012.
Augsburg went in front in the ninth minute through Sascha Molders, but Lasse Sobiech leveled for Mike Buskens' side.
Furth captain Mergim Mavraj was then sent off, with Giovanni Sio following him for an early bath towards the end of a combative relegation battle which left both sides still staring the drop in the face.