Saturday, 05/09/2026 at 15:30
Full timeTSG Hoffenheim 2:3 Borussia Dortmund
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
- 45' Leon Avdullahu TSG Hoffenheim · 0.03 xG chance 1–0
- 54' Tim Lemperle TSG Hoffenheim · 0.15 xG chance 2–0
- 61' Serhou Guirassy Borussia Dortmund · 0.58 xG chance 2–1
- 66' Fábio Silva Borussia Dortmund · 0.14 xG chance 2–2
- 87' Albian Hajdari (o.g.) Borussia Dortmund · 0.14 xG chance 2–3
The model against the result
- 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
Borussia Dortmund produced 0.76 xG more than projected
Projected before kick-off Produced on the night
The shots behind it
- 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.
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
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
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
Pre-match model & market record
7 opportunities flagged0 won7 lost
- Lost
- Lost
- Lost
- Lost
- Lost
- Lost
- Lost
View pre-match record Hide pre-match record
| 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 Hide
- 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.