Marco Reus gave Dortmund an early lead and it seemed like Jurgen Klopp's men were going to get the win they were looking for at the end of 2013.
However, reported Dortmund target Adrian Ramos brought Berlin level with his 11th goal of the season midway through the first half and Sami Allagui sealed victory for Jos Luhukay's men on the stroke of half-time.
With leaders Bayern Munich away at the FIFA Club World Cup, both Dortmund and second-placed Bayer Leverkusen had the chance to make up ground - but the latter could not take advantage either, losing 1-0 at Werder Bremen.
Santiago Garcia grabbed a dramatic winner in the 74th minute to ease the pressure on Bremen coach Robin Dutt, whose side pulled away from the relegation zone.
And they were worthy victors against a Leverkusen side who remain seven points behind Bayern, while Dortmund are a further five points in arrears.
Elsewhere, Mainz won a five-goal thriller away to Hamburg, who finished with 10 men before losing to Shinji Okazaki's injury-time goal.
The Japanese forward scored his seventh and eighth goals of the season and also set up Nicolai Muller for the second goal.
Hamburg had led through Hakan Calhanoglu and drew level in the 79th minute through Rafael van der Vaart, but they lost Tomas Rincon to a red card three minutes after that and it proved costly.
A Torsten Oehrl penalty earned Eintracht Braunschweig only their third win of the season as Hoffenheim failed to score for only the second time this season.
Oehrl had an early goal ruled out for offside but he made sure of the points from the spot in the 29th minute.
Braunschweig ended the game with 10 men after Timo Perthel was sent off, but they held on for a win which revives hopes of avoiding relegation this season.
Two goals from Admir Mehmedi gave Freiburg reason to be cheerful at the end of a tiring and gruelling first half of the season.
The Swiss striker scored two goals in 10 first-half minutes to help Christian Streich's men get the better of a Hannover side who find themselves in freefall, and just four points above Freiburg at the turn of the year.
Their best player Leonardo Bittencourt did grab a late consolation, but that may not be enough to keep coach Mirko Slomka, the club's longest-serving coach, in a job going into 2014.
Augsburg missed the chance to move up to seventh on Friday night as they managed only to pick up a point in a 1-1 draw at Eintracht Frankfurt.
Nurnberg ended 2013 still waiting for their first win of the season after being held to a 0-0 draw by Schalke on Saturday evening.
The Bavarian club's 11th draw of the season left them in a share of bottom spot in the Bundesliga with Eintracht Braunschweig with only goal difference keeping Gertjan Verbeek's side off the foot of the table.
Nurnberg created nearly all of the chances, had a goal disallowed and hit the woodwork for the 16th time this season, but failed to do the most important thing - score a goal.