Cologne won the 2024/25 2. Bundesliga title and joined Hamburg in automatic promotion. Elversberg finished third but lost the promotion play-off; Ulm and Regensburg were relegated, while Braunschweig survived their own play-off. Here are all 18 final positions and the matches that determined those outcomes.
The complete 2. Bundesliga 2024/25 final table
Cologne finished first with 61 points, Hamburg second with 59 and Elversberg third with 58. The league programme ended on 18 May 2025, after every club had played 34 matches. These are the complete final standings, rather than a calendar-year table or a snapshot taken before the last round.
| Rank | Club | P | W | D | L | GF–GA | GD | Pts |
|---|---|---|---|---|---|---|---|---|
| 1 | 1. FC Köln | 34 | 18 | 7 | 9 | 53–38 | +15 | 61 |
| 2 | Hamburger SV | 34 | 16 | 11 | 7 | 78–44 | +34 | 59 |
| 3 | SV Elversberg | 34 | 16 | 10 | 8 | 64–37 | +27 | 58 |
| 4 | SC Paderborn 07 | 34 | 15 | 10 | 9 | 56–46 | +10 | 55 |
| 5 | 1. FC Magdeburg | 34 | 14 | 11 | 9 | 64–52 | +12 | 53 |
| 6 | Fortuna Düsseldorf | 34 | 14 | 11 | 9 | 57–52 | +5 | 53 |
| 7 | 1. FC Kaiserslautern | 34 | 15 | 8 | 11 | 56–55 | +1 | 53 |
| 8 | Karlsruher SC | 34 | 14 | 10 | 10 | 57–55 | +2 | 52 |
| 9 | Hannover 96 | 34 | 13 | 12 | 9 | 41–36 | +5 | 51 |
| 10 | 1. FC Nürnberg | 34 | 14 | 6 | 14 | 60–57 | +3 | 48 |
| 11 | Hertha BSC | 34 | 12 | 8 | 14 | 49–51 | −2 | 44 |
| 12 | SV Darmstadt 98 | 34 | 11 | 9 | 14 | 56–55 | +1 | 42 |
| 13 | SpVgg Greuther Fürth | 34 | 10 | 9 | 15 | 45–59 | −14 | 39 |
| 14 | FC Schalke 04 | 34 | 10 | 8 | 16 | 52–62 | −10 | 38 |
| 15 | Preußen Münster | 34 | 8 | 12 | 14 | 40–43 | −3 | 36 |
| 16 | Eintracht Braunschweig | 34 | 8 | 11 | 15 | 38–64 | −26 | 35 |
| 17 | SSV Ulm 1846 | 34 | 6 | 12 | 16 | 36–48 | −12 | 30 |
| 18 | Jahn Regensburg | 34 | 6 | 7 | 21 | 23–71 | −48 | 25 |
P means played, W wins, D draws, L defeats, GF–GA goals scored and conceded, and GD goal difference. A victory was worth three points and a draw one. The final ranking is based first on points; goal difference matters when the points are equal. It does not allow a high-scoring club to overtake a team that has earned more points.
The outcome lines are easy to misread without a legend. First and second earned automatic promotion. Third qualified for the promotion play-off against the Bundesliga's sixteenth-placed club. Sixteenth entered a different contest, against the third-placed team in 3. Liga, to defend its second-tier place. Seventeenth and eighteenth went down automatically.
Those two play-offs did not change the order of this league table. Elversberg remained the third-placed team in the 2024/25 standings even after failing to go up. Braunschweig remained sixteenth even after securing survival. The league table answers where a side finished over 34 matches; the additional matches answer which division it entered next.
That distinction is useful when reading an archive with small colored labels. “Promotion play-off” means eligibility for another tie, not promotion already achieved. “Relegation play-off” means a final chance to survive, not a completed relegation. The second-tier format guide explains the structure, while the following sections reconstruct what actually happened in this particular season.
How Cologne and Hamburg secured automatic promotion
Cologne and Hamburg earned the same essential reward: a place in the Bundesliga without a play-off. Their celebrations came on different weekends, however, and the second-tier championship remained a separate question. Reading the final table alongside those decisive matches explains why Hamburg could celebrate promotion before Cologne eventually finished above them.
Cologne returned as champions
Cologne secured their immediate return on 18 May with a 4–0 home victory over Kaiserslautern. Eric Martel and Luca Waldschmidt established the first-half advantage, with Florian Kainz and Mark Uth completing the scoring after the break. The match settled promotion directly, while Hamburg's 3–2 defeat at Greuther Fürth allowed Cologne to finish as champions.
That result brought together two achievements which should still be distinguished. Promotion ended Cologne's spell outside the top flight after one season; first place added the second-tier title. The practical difference was that Cologne's last afternoon still carried sporting stakes. The team had to finish the job, rather than merely enjoy a ceremonial closing fixture.
The final record of 18 wins and seven draws produced 61 points. Cologne scored fewer league goals than Hamburg, but won two more matches. The points system rewards victories rather than aesthetic superiority or an aggregate margin of victory. A sequence of narrow successes can therefore be more valuable than a smaller number of emphatic wins, and the champion need not have the largest positive goal difference.
For supporters, the final-day home setting mattered too. A promotion race that can swing between stadiums is difficult to follow through one match alone. Cologne's emphatic scoreline removed their own uncertainty, and the result elsewhere supplied the title. The final standings condense that afternoon into a two-point advantage; the match explains how it was secured.
Hamburg ended the seven-year wait
Hamburg's breakthrough arrived a week earlier. On 10 May, a 6–1 victory over Ulm at the Volksparkstadion confirmed promotion on Matchday 33. The club's report records a crowd of 57,000 for the occasion. After seven seasons in the second division, the immediate emotional significance was the return itself, not the eventual order of the top two.
Promotion already being secure explains the different context of Hamburg's final match. Losing 3–2 at Fürth cost them the chance to finish first, but could not undo the achievement celebrated against Ulm. An archive labelling Hamburg “runner-up” should therefore be read as a successful automatic-promotion season, rather than a failed championship campaign by default.
Hamburg's 78 goals and plus-34 goal difference show the strength of their attacking season. Yet their 11 draws also help explain why they ended with fewer points than Cologne. When a promotion race is close, the conversion of competitive performances into wins matters as much as a club's ability to dominate its best afternoons.
The two clubs consequently offer different ways to remember the same table. Cologne's story ends with the title and an immediate bounce back; Hamburg's centers on a long-awaited release from the second tier. Both earned direct access to the Bundesliga, and neither needed to risk that reward in the additional two-legged contest facing third place.

Why Elversberg finished third but stayed in the second tier
Elversberg earned third place through their league results, but promotion required a second achievement. Their 2–1 victory at Schalke on the final day secured the play-off position with 58 points, three ahead of Paderborn. Lukas Petkov and Maurice Neubauer scored for Horst Steffen's side. This was only Elversberg's second season in the second tier, making the finish an exceptional advance without yet constituting a Bundesliga arrival.
The final points total also puts the challenge in perspective. Elversberg were only one point behind automatically promoted Hamburg. The difference between second and third was small on the table but enormous in the calendar: one side had completed its work, while the other faced two more matches against a club already playing top-flight football.
That is why third should be described as a promotion opportunity rather than promotion itself. A supporter looking only at a green-highlighted row could easily miss the additional hurdle. Elversberg's excellent league campaign qualified them to face Heidenheim, the Bundesliga's sixteenth-placed side, but points from the second-tier season could not be carried into that contest.
Heidenheim won the two-legged promotion play-off
The first leg in Heidenheim on 22 May ended 2–2. Elversberg had led by two goals, but the home side recovered to leave the tie level. That comeback mattered beyond the immediate result. Elversberg had demonstrated they could threaten a Bundesliga opponent, yet they had not converted their early advantage into an aggregate lead for the home return.
On 26 May, Heidenheim won 2–1 in Elversberg, taking the tie 4–3 on aggregate. Léo Scienza's winner arrived in the fifth minute of added time. It preserved Heidenheim's top-flight status and left Elversberg in the second division. Across two matches, the margin between promotion and disappointment was a single goal.
The late timing should not rewrite the preceding season as failure. Thirty-four league games had established Elversberg as the third-best side in their division; the play-off then tested them against a different opponent under a different competitive format. Both statements are true. The archive needs the league rank and the tie result to give a complete answer.
For future promotion races, the lesson is practical rather than predictive. When third place is the attainable target, check the extra dates and opponent before treating the last league match as the end of the season. A successful league finish can create another decisive week, and a strong first-leg start can still leave the aggregate score balanced.
Elversberg's 2024/25 record therefore belongs in two lines: third in the final table, then defeated in the promotion play-off. That wording preserves the achievement, the frustration and the actual divisional outcome without suggesting that the later matches altered the original standings.

The chasing pack and the middle of the table
Paderborn finished closest to the play-off place, but their final afternoon ended with a 3–0 defeat at Karlsruhe. Lilian Egloff scored twice and Marcel Franke added the other goal for the hosts. The result left Paderborn fourth on 55 points, outside the extra promotion contest. In a league where only the first three positions offer a route up, fourth can look close while still leaving the season completely finished.
The next three clubs all collected 53 points. Magdeburg, Düsseldorf and Kaiserslautern were separated by goal difference: plus-12, plus-five and plus-one respectively. This is where the goal column genuinely decides rank, unlike comparisons between teams with unequal points. A narrow league cluster can therefore produce several different finishing positions even when the points-based achievement is identical.
Karlsruhe ended eighth with 52 points, only one fewer than that trio. Their emphatic final win was consequently valuable in its own right, although it did not reopen promotion. A club's last performance and its season rank answer different questions: the former may be excellent, while the latter still reflects dropped points across the preceding months.
Hannover are the clearest warning against reading only goals conceded. Their defensive total of 36 was the division's lowest, but they finished ninth with 51 points. They scored 41 goals, far below Hamburg's 78, and drew 12 matches. Those totals do not diagnose every tactical issue, but they show why defensive security alone did not produce a top-three finish.
The final 1–1 draw at Hertha fitted that pattern of shared points. Hertha themselves ended eleventh with 44. Their season split was striking: 27 points away and 17 at home. That distribution is a useful counterweight to the assumption that a famous club's large home setting automatically produces promotion-level results. The conditions may be impressive while the points return remains uneven.
Nürnberg's tenth place and Darmstadt's twelfth also resist a simple attacking ranking. Both had a positive goal difference, yet neither finished in the promotion group. Total scoring, the spread of wins and defeats, and the timing of decisive points all contribute to a final position. A plus sign beside goal difference is an advantage, not a guarantee of a high finish.
Fürth and Schalke completed the lower middle on 39 and 38 points. They finished above the direct-survival boundary, but the table makes clear how limited their cushion was. For supporters reviewing this season, the useful comparison is with the next objective line: Paderborn were three points behind third, while Schalke were three ahead of sixteenth. The same numerical gap carries a very different emotional meaning at opposite ends of the standings.
How the relegation battle ended
The bottom of the final table contained three different outcomes: direct survival in fifteenth, another chance in sixteenth, and automatic relegation in seventeenth and eighteenth. Those boundaries explain why Münster could celebrate a draw while Braunschweig still had a nervous week ahead. A historical table should retain those distinctions rather than marking the entire bottom group as relegated.
Münster survived while Ulm and Regensburg went down
Münster drew 2–2 at Ulm on 18 May and finished fifteenth with 36 points. Braunschweig's 4–1 defeat against Nürnberg left them one point lower. For Münster, the final draw was enough to complete survival directly, with no additional contest required. The club's report describes the celebrations with the thousands of travelling supporters.
Ulm ended seventeenth on 30 points, while Regensburg were eighteenth on 25. Both returned to 3. Liga after one season in the second tier. Regensburg's relegation had already been confirmed with two matches remaining; Ulm's came on the penultimate weekend. The final draw between Ulm and Münster therefore carried unequal stakes: one side was already going down, while the other was still trying to avoid the play-off.
The goal-difference column helps describe the struggle, but cannot undo the points outcome. Münster conceded 43 goals against 40 scored, a relatively narrow imbalance. Ulm's minus-12 was also substantially less severe than Braunschweig's minus-26. Yet Braunschweig earned five more points, and those extra points secured the sixteenth-place opportunity. Total goals alone do not decide survival.
That is an important distinction for anyone reviewing a difficult season through one statistical measure. Defensive figures may show a team was competitive in many matches, while the points still reveal insufficient wins. Münster converted their final afternoon into the one point needed to finish above the line; Ulm could not recover the deficit created earlier in the campaign.
Braunschweig beat Saarbrücken after extra time
Braunschweig's opponent was Saarbrücken, the third-placed team from 3. Liga. A 2–0 away win in the first leg on 23 May appeared to put the second-tier side in a strong position. But Saarbrücken then won the first 90 minutes of the return match by the same score on 27 May, bringing the aggregate result level and forcing extra time.
Braunschweig recovered with two extra-time goals. The second leg finished 2–2 after extra time, producing a 4–2 aggregate victory for the home side. They kept their second-tier place, while Saarbrücken remained in 3. Liga. The final score in isolation can obscure how close Braunschweig came to losing their advantage.
For an archive, the correct label is “sixteenth, survived via the play-off.” They did not climb to fifteenth retrospectively, and they were not one of the season's relegated clubs. Their outcome was settled outside the 34-game standings, just as Elversberg's promotion attempt was at the opposite end.
The two play-offs consequently produced continuity between divisions in this season: Heidenheim defended a Bundesliga place and Braunschweig defended a second-tier place. Automatic promotion and relegation still moved clubs, but neither additional tie changed the incumbent's division. That full explanation is more informative than a colored relegation zone without the subsequent results.
The scoring and support behind the final positions
Davie Selke finished as the division's leading scorer with 22 goals for Hamburg. He was also voted Bundesliga 2's player of the season. Those individual honours complemented promotion rather than replacing it: his output was part of a team season that ultimately earned second place and a direct route into the top flight.
Selke's contribution represented just over 28 percent of Hamburg's 78 league goals. That proportion is useful because it shows both the importance of a reliable striker and the remaining production required elsewhere. Even a Golden Boot season did not account for the whole attack. A club must create chances, distribute the scoring burden and turn its goals into points across different types of match.
The same distinction applies when comparing scorer lists with standings. A leading forward can excel while his club misses a collective target; a champion can share its goals widely without producing the competition's top scorer. For Hamburg in this season, the personal and team outcomes aligned. For a historical review, that alignment is more informative than treating the scoring trophy as an automatic explanation of every league position.
Support provided another remarkable dimension. The DFL's season report recorded 9,330,725 ticket sales for Bundesliga 2, an average of 30,493 per match and a league record. These are ticket-sales figures, a specific measure of demand. They should not be silently relabelled as a different attendance count or assumed to equal the number who physically passed through the gates at every fixture.
A powerful audience can help explain the experience of this division without explaining the order of its table. Traditional large clubs and smaller institutions competed under the same points rules. A full stadium could give a promotion celebration its scale, but it could not make a draw worth more than one point or remove the need for a play-off.
That contrast is part of why 2024/25 is worth revisiting. The top two contained famous names, while third belonged to Elversberg in only their second second-tier season. At the bottom, new arrivals experienced very different outcomes: Münster survived, Ulm and Regensburg went down. Neither history nor the size of a club's audience supplied a universal forecast.
When returning to this archive, start with the full final table, then choose the evidence that answers your question. The top-two reports explain promotion timing; the play-off results explain divisional outcomes; scoring figures describe individual impact; and ticket data describes supporter demand. For current Bundesliga positions, use the live top-flight table. Keep the season labels separate so a clear historical answer remains clear as clubs and players move on.

JOIN THE DISCUSSION
Comments
Sign in with Google to comment. Keep the discussion focused on Bundesliga football and respectful to other supporters. New comments are reviewed before publication.
Loading comments…