Bundesliga · 2025PreZero Arena

TSG Hoffenheim 2–1 Borussia Dortmund · Bundesliga

2–1Historical match

A completed match from a finished season. This page is the record of what happened.

Match at a glance

TSG Hoffenheim won 2–1.

Shots
138
Shots on target
43
Expected goals
2.250.7
Possession
46%54%

Full time

What the match recorded

1899 Hoffenheim beat Borussia Dortmund 2–1. Recorded in this match (1899 Hoffenheim – Borussia Dortmund): shots 13–8, shots on target 4–3, expected goals 2.25–0.7, possession 46%–54%. This is what was recorded. It is not a claim that the result was foreseeable.

Pre-match record

What the data showed before kick-off. Kept for reference; it did not know the result.

1899 Hoffenheim's recent record differs from the season

moderate

1899 Hoffenheim's last-five goals scored average is below their season average.

1.2 goals/match ▲Goals forLast 5 · Season1.97 goals/match
Evidence and caveat

Comparison: An unweighted last-five average is compared with the unweighted season average.

Window: last_5 versus season

MetricLast 5SeasonBaseline
Goals for1.2 goals/match1.97 goals/match1.41 goals/match

Caveat: Five matches are sensitive to opponent mix and isolated match states.

Both teams have elevated corners records

moderate

Each team's season corners average is above the competition baseline.

5.57 corners/match ●Corners1899 Hoffenheim · Borussia Dortmund5.47 corners/match
Evidence and caveat

Comparison: Both team averages are compared with the same competition baseline.

Window: season

Metric1899 HoffenheimBorussia DortmundBaseline
Corners5.57 corners/match5.47 corners/match4.6 corners/match

Caveat: A shared historical pattern is descriptive and may not repeat in one fixture.

This match

Match statistics

  • Shots13 shots8 shotsTSG Hoffenheim 13 shots, Borussia Dortmund 8 shots
  • Shots on target4 shots3 shotsTSG Hoffenheim 4 shots, Borussia Dortmund 3 shots
  • Expected goals2.25 xG0.7 xGTSG Hoffenheim 2.25 xG, Borussia Dortmund 0.7 xG
  • Possession46%54%TSG Hoffenheim 46%, Borussia Dortmund 54%
  • Corners4 corners3 cornersTSG Hoffenheim 4 corners, Borussia Dortmund 3 corners
  • Fouls14 fouls11 foulsTSG Hoffenheim 14 fouls, Borussia Dortmund 11 fouls
  • Yellow cards2 cards1 cardTSG Hoffenheim 2 cards, Borussia Dortmund 1 card

Every shot

Shot map

Every recorded shot, placed where it was taken and sized by its expected-goals value. Arrows show each team’s attacking direction.

Fisnik Asllani · 1899 Hoffenheim · 1′ · 0.01 xG · off target or blockedBernardo · 1899 Hoffenheim · 44′ · 0.01 xG · off target or blockedAlbian Hajdari · 1899 Hoffenheim · 14′ · 0.02 xG · off target or blockedWaldemar Anton · Borussia Dortmund · 29′ · 0.02 xG · on targetVladimír Coufal · 1899 Hoffenheim · 44′ · 0.02 xG · off target or blockedOzan Kabak · 1899 Hoffenheim · 88′ · 0.02 xG · off target or blockedCarney Chukwuemeka · Borussia Dortmund · 56′ · 0.03 xG · off target or blockedSerhou Guirassy · Borussia Dortmund · 87′ · 0.03 xG · goalFisnik Asllani · 1899 Hoffenheim · 1′ · 0.04 xG · off target or blockedTim Lemperle · 1899 Hoffenheim · 6′ · 0.06 xG · off target or blockedMaximilian Beier · Borussia Dortmund · 90′ · 0.06 xG · on targetTim Lemperle · 1899 Hoffenheim · 31′ · 0.07 xG · off target or blockedAndrej Kramarić · 1899 Hoffenheim · 37′ · 0.07 xG · off target or blockedDaniel Svensson · Borussia Dortmund · 65′ · 0.08 xG · off target or blockedOzan Kabak · 1899 Hoffenheim · 62′ · 0.09 xG · on targetMaximilian Beier · Borussia Dortmund · 65′ · 0.09 xG · off target or blockedAndrej Kramarić · 1899 Hoffenheim · 26′ · 0.12 xG · on targetJulian Brandt · Borussia Dortmund · 90′ · 0.17 xG · off target or blockedDaniel Svensson · Borussia Dortmund · 13′ · 0.27 xG · off target or blockedAndrej Kramarić · 1899 Hoffenheim · 42′ · 0.82 xG · goalAndrej Kramarić · 1899 Hoffenheim · 90′ · 0.82 xG · goal
  • off target
  • on target
  • goal
  • penalty
  • size = xG

1899 Hoffenheim: 13 shots, 4 on target, 2.17 xG. Borussia Dortmund: 8 shots, 3 on target, 0.75 xG.

How the match built

Expected-goals timeline

Expected goals accumulated minute by minute. Circles mark the goals that were actually scored.

01.252.50′HT90′Andrej Kramarić · 1899 Hoffenheim · 42′Andrej Kramarić · 1899 Hoffenheim · 90′Serhou Guirassy · Borussia Dortmund · 87′

The step line is cumulative expected goals; circles mark goals. Final: 1899 Hoffenheim 2.17 xG · Borussia Dortmund 0.75 xG.

History

Head-to-head

Recent meetings between these teams.

Last 5 meetings

1TSG Hoffenheim
1Draws
3Borussia Dortmund
Borussia Dortmund — TSG Hoffenheim · Bundesliga2–0
TSG Hoffenheim — Borussia Dortmund · Bundesliga2–3
Borussia Dortmund — TSG Hoffenheim · Bundesliga1–1
Borussia Dortmund — TSG Hoffenheim · Bundesliga2–3
TSG Hoffenheim — Borussia Dortmund · Bundesliga1–3

Head-to-Head & Recent Meetings

Metric comparison

Team comparison

Season averages, with the sample size beside each metric.

Where the edge is

Season: TSG Hoffenheim favored in 2 of 11 directional metrics · Borussia Dortmund in 8 · 1 too close

led this metric higher value (descriptive) too close

Window

Season

TSG Hoffenheim30 matchesBorussia Dortmund30 matches
1.97 goals/matchGoals scored30/302.03 goals/match
1.47 goals/matchGoals allowed30/30▲ 1.03 goals/match
1.62 xG/matchExpected goals30/30▲ 1.82 xG/match
13.9 shots/match ▲Shots30/3013.1 shots/match
5.13 shots/match ▲Shots on target30/304.67 shots/match
54.9% ●Possession30/3053.2%
5.57 corners/match ●Corners30/305.47 corners/match
2.04 cards/matchCards25/251.92 cards/match
14 fouls/matchFouls30/3011.4 fouls/match

Evidence quality

How much supports this analysis

Grade A · Strong evidenceStrong evidence — limited
Season samples30 / 30home / away teams
Recent samples5 / 5last-five windows
FreshnessLess than one dayfrom nearest prior match
  • The fixture is outside the configured active season.
  • Recent samples and important metric coverage meet the strong evidence threshold.

Known unknowns

  • Lineups, injuries, suspensions and tactical changes are not available in the retained dataset.
  • The fixture season differs from the competition's configured active season.
Analysis cutoff: Sat, 18 Apr 2026, 17:30 UTC · analysis-v4

Team rankings in Bundesliga

Make a graphic from this match

Creator Studio builds a branded post from this match's recorded data, with its evidence grade and source cutoff carried into the export.

Turn this match into a graphicReady-made from PitchMath data · No sign-up required