xgEdge

Saturday, 29/08/2026 at 18:30

Full time
Match report · Bundesliga

Borussia Dortmund 2:0 Hamburger SV

Borussia Dortmund Home 1.53 xG · 21 shots
Hamburger SV Away 0.91 xG · 8 shots
20 The scoreline reflected the chances

Borussia Dortmund were the model's likeliest winner before kick-off at 64%. They won 2–0. The biggest difference was Borussia Dortmund's attack: 1.53 xG against 2.08 projected (−0.55).

Goals

  1. 9' Serhou Guirassy Borussia Dortmund · 0.10 xG chance 1–0
  2. 45' Sebastiaan Bornauw (o.g.) Borussia Dortmund · 0.10 xG chance 2–0

The model against the result

priced before kick-off
Borussia Dortmund
64% What happened
Draw
23%
Hamburger SV
13%

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

Projected vs produced

Expected goals
Borussia Dortmund The model projected 2.08 Produced 1.53 Difference -0.55
Hamburger SV The model projected 0.93 Produced 0.91 Difference -0.02

Borussia Dortmund produced 0.55 xG less than projected

Projected before kick-off Produced on the night

The shots behind it

Borussia Dortmund Hamburger SV
Shots
21
8
On target
7
3
Inside the box
12
4
xG per shot
0.07
0.10
Open play xG
1.43
0.81
Set-piece xG
0.09
0.00
Penalties
—
—
Shot-level xG may differ from the published match total

The provider publishes the match total separately from its shot-by-shot values. Those values are rounded to two decimals and, leaving out penalties and own goals, add up to its non-penalty xG: 1.52 for Borussia Dortmund and 0.80 for Hamburger SV.

Shot map

Both teams shown attacking the same goal for comparison.

Hamburger SV · Patson Daka · 59' · No goal · 11 m · 0.39 xG Borussia Dortmund · Giannis Konstantelias · 45' · No goal · 14 m · 0.15 xG Borussia Dortmund · Konstantinos Karetsas · 33' · No goal · 13 m · 0.14 xG Borussia Dortmund · Giannis Konstantelias · 50' · No goal · 14 m · 0.14 xG Hamburger SV · Patson Daka · 67' · No goal · 17 m · 0.13 xG Borussia Dortmund · Serhou Guirassy · 9' · Goal · 13 m · 0.10 xG Borussia Dortmund · Sebastiaan Bornauw · 45' · Goal · 11 m · 0.10 xG Hamburger SV · Patson Daka · 49' · No goal · 9 m · 0.10 xG Borussia Dortmund · Felix Nmecha · 8' · No goal · 18 m · 0.08 xG Borussia Dortmund · Maximilian Beier · 35' · No goal · 16 m · 0.08 xG Borussia Dortmund · Konstantinos Karetsas · 41' · No goal · 18 m · 0.08 xG Borussia Dortmund · Maximilian Beier · 41' · No goal · 14 m · 0.08 xG Borussia Dortmund · Konstantinos Karetsas · 50' · No goal · 8 m · 0.08 xG Borussia Dortmund · Maximilian Beier · 71' · No goal · 14 m · 0.08 xG Borussia Dortmund · Joey Veerman · 90' · No goal · 12 m · 0.08 xG Borussia Dortmund · Konstantinos Karetsas · 23' · No goal · 25 m · 0.07 xG Borussia Dortmund · Serhou Guirassy · 44' · No goal · 13 m · 0.05 xG Hamburger SV · Rayan Philippe · 90' · No goal · 21 m · 0.05 xG Borussia Dortmund · Kauã Prates · 90' · No goal · 23 m · 0.05 xG Hamburger SV · Terem Moffi · 90' · No goal · 10 m · 0.05 xG Borussia Dortmund · Konstantinos Karetsas · 41' · No goal · 23 m · 0.04 xG Hamburger SV · Albert Sambi Lokonga · 80' · No goal · 4 m · 0.04 xG Borussia Dortmund · Konstantinos Karetsas · 10' · No goal · 23 m · 0.03 xG Borussia Dortmund · Maximilian Beier · 15' · No goal · 11 m · 0.03 xG Borussia Dortmund · Jobe Bellingham · 48' · No goal · 22 m · 0.03 xG Hamburger SV · Albert Grønbæk · 49' · No goal · 23 m · 0.03 xG Borussia Dortmund · Maximilian Beier · 33' · No goal · 5 m · 0.02 xG Hamburger SV · Albert Grønbæk · 79' · No goal · 26 m · 0.02 xG Borussia Dortmund · Felix Nmecha · 13' · No goal · 30 m · 0.01 xG

All shots

29 shots · 2.33 xG

Hover, focus or tap a shot to read it.

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

Recent form

Last 6 · xG per match
Borussia Dortmund

1.76 xG created 1.24 xGA

  • L 1.30 created, 0.63 conceded against Bayer 04 Leverkusen
  • 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
Hamburger SV

1.17 xG created 1.83 xGA

  • L 0.71 created, 3.48 conceded against VfB Stuttgart
  • L 0.57 created, 1.74 conceded against SV Werder Bremen
  • L 1.37 created, 1.45 conceded against TSG Hoffenheim
  • W 0.62 created, 0.65 conceded against Eintracht Frankfurt
  • W 1.98 created, 0.41 conceded against SC Freiburg
  • D 1.79 created, 3.27 conceded against Bayer 04 Leverkusen

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

Head to head

Borussia Dortmund: 1 won · 1 drawn · 0 lost

Pre-match model & market record

3 opportunities flagged0 won3 lost

  • Lost
  • Lost
  • Lost
View pre-match record
The outcomes the model flagged on Borussia Dortmund against Hamburger SV before kick-off, in the order they ranked, with the price, the edge and what became of each.
Selection Price Edge Result
Draw 5.00 +15.8% Lost
Both teams to score 1.80 +4.9% Lost
Hamburger SV to win 8.00 +4.5% Lost

Pre-match model vs market

Outcome Model Market Difference Fair odds
Borussia Dortmund 63.8% 69.8% −6.0 pp 1.57
Draw 23.2% 18.6% +4.5 pp 4.32
Hamburger SV 13.1% 11.6% +1.4 pp 7.65

Other markets

Outcome Model Market Difference Fair odds
Both teams to score 58.3% 51.5% +6.8 pp 1.72
Both teams not to score 41.7% 48.5% −6.8 pp 2.40
Over 1.5 goals 83.9% 83.2% +0.7 pp 1.19
Under 1.5 goals 16.1% 16.8% −0.7 pp 6.22
Over 2.5 goals 59.7% 61.5% −1.8 pp 1.67
Under 2.5 goals 40.3% 38.5% +1.8 pp 2.48

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)
Borussia Dortmund sample
20 matches
Hamburger SV sample
20 matches
Computed
9 hours before kick-off
Prices taken
9 hours 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.