xgEdge

Saturday, 05/09/2026 at 15:30

Full time
Match report · Bundesliga

TSG Hoffenheim 2:3 Borussia Dortmund

TSG Hoffenheim Home 1.17 xG · 18 shots
Borussia Dortmund Away 2.02 xG · 12 shots
23 The scoreline reflected the chances

TSG Hoffenheim were the model's likeliest winner before kick-off at 43%. Borussia Dortmund won 3–2. The biggest difference was Borussia Dortmund's attack: 2.02 xG against 1.26 projected (+0.76). TSG Hoffenheim produced 1.17 xG against 1.58 projected (−0.41).

Goals

  1. 45' Leon Avdullahu TSG Hoffenheim · 0.03 xG chance 1–0
  2. 54' Tim Lemperle TSG Hoffenheim · 0.15 xG chance 2–0
  3. 61' Serhou Guirassy Borussia Dortmund · 0.58 xG chance 2–1
  4. 66' Fábio Silva Borussia Dortmund · 0.14 xG chance 2–2
  5. 87' Albian Hajdari (o.g.) Borussia Dortmund · 0.14 xG chance 2–3

The model against the result

priced before kick-off
TSG Hoffenheim
43%
Draw
29%
Borussia Dortmund
28% What happened

Data coverage Both teams have the full 20-match model window available.

Projected vs produced

Expected goals
TSG Hoffenheim The model projected 1.58 Produced 1.17 Difference -0.41
Borussia Dortmund The model projected 1.26 Produced 2.02 Difference +0.76

Borussia Dortmund produced 0.76 xG more than projected

Projected before kick-off Produced on the night

The shots behind it

TSG Hoffenheim Borussia Dortmund
Shots
18
12
On target
6
5
Inside the box
11
10
xG per shot
0.06
0.18
Open play xG
0.58
1.97
Set-piece xG
0.57
0.19
Penalties
—
—

TSG Hoffenheim's shots add up to 1.15 xG and Borussia Dortmund's to 2.16; the published figures are 1.17 and 2.02.

Shot map

Both teams shown attacking the same goal for comparison.

Borussia Dortmund · Serhou Guirassy · 61' · Goal · 12 m · 0.58 xG Borussia Dortmund · Maximilian Beier · 23' · No goal · 4 m · 0.49 xG Borussia Dortmund · Serhou Guirassy · 59' · No goal · 5 m · 0.33 xG TSG Hoffenheim · Adam Hložek · 34' · No goal · 8 m · 0.19 xG Borussia Dortmund · Serhou Guirassy · 50' · No goal · 4 m · 0.19 xG TSG Hoffenheim · Tim Lemperle · 54' · Goal · 15 m · 0.15 xG Borussia Dortmund · Fábio Silva · 66' · Goal · 11 m · 0.14 xG Borussia Dortmund · Albian Hajdari · 87' · Goal · 5 m · 0.14 xG TSG Hoffenheim · Ozan Kabak · 33' · No goal · 8 m · 0.13 xG TSG Hoffenheim · Tim Lemperle · 49' · No goal · 14 m · 0.11 xG Borussia Dortmund · Joey Veerman · 51' · No goal · 11 m · 0.10 xG TSG Hoffenheim · Tim Lemperle · 39' · No goal · 17 m · 0.09 xG TSG Hoffenheim · Robin Hranáč · 89' · No goal · 4 m · 0.08 xG Borussia Dortmund · Felix Nmecha · 41' · No goal · 9 m · 0.06 xG TSG Hoffenheim · Wouter Burger · 72' · No goal · 16 m · 0.06 xG TSG Hoffenheim · Adam Daghim · 30' · No goal · 13 m · 0.05 xG TSG Hoffenheim · Ozan Kabak · 65' · No goal · 3 m · 0.05 xG Borussia Dortmund · Serhou Guirassy · 22' · No goal · 14 m · 0.04 xG Borussia Dortmund · Serhou Guirassy · 67' · No goal · 22 m · 0.04 xG TSG Hoffenheim · Vladimír Coufal · 77' · No goal · 26 m · 0.04 xG TSG Hoffenheim · Adam Hložek · 17' · No goal · 15 m · 0.03 xG TSG Hoffenheim · Patrick Wimmer · 38' · No goal · 21 m · 0.03 xG TSG Hoffenheim · Leon Avdullahu · 45' · Goal · 23 m · 0.03 xG Borussia Dortmund · Daniel Svensson · 51' · No goal · 15 m · 0.03 xG TSG Hoffenheim · Ozan Kabak · 53' · No goal · 10 m · 0.03 xG TSG Hoffenheim · Mats Rots · 86' · No goal · 27 m · 0.03 xG Borussia Dortmund · Maximilian Beier · 6' · No goal · 14 m · 0.02 xG TSG Hoffenheim · Adam Daghim · 45' · No goal · 14 m · 0.02 xG TSG Hoffenheim · Tim Lemperle · 77' · No goal · 24 m · 0.02 xG TSG Hoffenheim · Adam Daghim · 1' · No goal · 12 m · 0.01 xG

All shots

30 shots · 3.31 xG

Hover, focus or tap a shot to read it.

  • TSG Hoffenheim
  • Borussia Dortmund
  • Filled = goal
  • Dot area = xG (the smallest chances drawn at a minimum size)

Recent form

Last 6 · xG per match
TSG Hoffenheim

1.87 xG created 1.31 xGA

  • W 2.25 created, 0.70 conceded against Borussia Dortmund
  • W 1.45 created, 1.37 conceded against Hamburger SV
  • D 2.47 created, 1.57 conceded against VfB Stuttgart
  • W 1.52 created, 1.07 conceded against SV Werder Bremen
  • L 1.62 created, 1.20 conceded against Borussia M'gladbach
  • L 1.88 created, 1.95 conceded against 1. FC Köln
Borussia Dortmund

1.80 xG created 1.29 xGA

  • L 0.70 created, 2.25 conceded against TSG Hoffenheim
  • W 3.37 created, 0.76 conceded against SC Freiburg
  • L 0.49 created, 2.20 conceded against Borussia M'gladbach
  • W 1.94 created, 1.12 conceded against Eintracht Frankfurt
  • W 2.74 created, 0.49 conceded against SV Werder Bremen
  • W 1.53 created, 0.91 conceded against Hamburger SV

xG created xG conceded (xGA) W / D / L: the match result

Head to head

TSG Hoffenheim: 1 won · 0 drawn · 1 lost

Pre-match model & market record

7 opportunities flagged0 won7 lost

  • Lost
  • Lost
  • Lost
  • Lost
  • Lost
  • Lost
  • Lost
View pre-match record
The outcomes the model flagged on TSG Hoffenheim against Borussia Dortmund before kick-off, in the order they ranked, with the price, the edge and what became of each.
Selection Price Edge Result
Borussia Dortmund not to score 5.50 +40.1% Lost
Borussia Dortmund at most 1 goal 2.10 +33.3% Lost
Under 2.5 goals 2.75 +22.3% Lost
Under 1.5 goals 6.00 +10.5% Lost
Draw 3.75 +8.9% Lost
TSG Hoffenheim to win 2.50 +7.9% Lost
Both teams not to score 2.75 +2.7% Lost

Pre-match model vs market

Outcome Model Market Difference Fair odds
TSG Hoffenheim 43.2% 37.8% +5.4 pp 2.32
Draw 29.0% 25.2% +3.9 pp 3.44
Borussia Dortmund 27.8% 37.0% −9.2 pp 3.60

Other markets

Outcome Model Market Difference Fair odds
TSG Hoffenheim to score 81.8% 78.3% +3.5 pp 1.22
TSG Hoffenheim not to score 18.2% 21.7% −3.5 pp 5.51
Borussia Dortmund to score 74.5% 82.8% −8.3 pp 1.34
Borussia Dortmund not to score 25.5% 17.2% +8.3 pp 3.92
Both teams to score 62.6% 66.3% −3.6 pp 1.60
Both teams not to score 37.4% 33.7% +3.6 pp 2.68
TSG Hoffenheim 2+ goals 48.3% 48.5% −0.2 pp 2.07
TSG Hoffenheim at most 1 goal 51.7% 51.5% +0.2 pp 1.94
Borussia Dortmund 2+ goals 36.5% 55.7% −19.2 pp 2.74
Borussia Dortmund at most 1 goal 63.5% 44.3% +19.2 pp 1.58
Over 1.5 goals 81.6% 84.2% −2.6 pp 1.23
Under 1.5 goals 18.4% 15.8% +2.6 pp 5.43
Over 2.5 goals 55.5% 65.6% −10.0 pp 1.80
Under 2.5 goals 44.5% 34.4% +10.0 pp 2.25

Prices and probabilities are the ones stored before kick-off; nothing here is recalculated. Edge is the model's probability times the price, minus one, so a flagged outcome that lost is the ordinary case rather than a contradiction.

Model details

Show
Fit window
the last 20 matches, recency weighted (a match 107 days old counts half)
TSG Hoffenheim sample
20 matches
Borussia Dortmund sample
20 matches
Computed
29 minutes before kick-off
Prices taken
30 minutes before kick-off

Limitations

The model reads expected goals and nothing else. It does not know the lineups, who is injured or suspended, what either side has to play for, the weather, or how congested the schedule around this match is.