xgEdge

Saturday, 17/10/2026 at 13:30

Full time
Match report · Championship

Middlesbrough 2:2 Cardiff City

Middlesbrough Home 2.71 xG · 36 shots
Cardiff City Away 0.85 xG · 7 shots
22 Middlesbrough had the better chances, but it finished level

Middlesbrough were the model's likeliest winner before kick-off at 57%. It finished 2–2. The biggest difference was Middlesbrough's attack: 2.71 xG against 2.07 projected (+0.64). Cardiff City produced 0.85 xG against 1.19 projected (−0.34).

Goals

  1. 22' Jack Moylan Cardiff City · 0.10 xG chance 0–1
  2. 45' Ollie Tanner Cardiff City · 0.03 xG chance 0–2
  3. 58' Tommy Conway Middlesbrough · 0.33 xG chance 1–2
  4. 61' Will Lankshear Middlesbrough · 0.04 xG chance 2–2

The model against the result

priced before kick-off
Middlesbrough
57%
Draw
24% What happened
Cardiff City
19%

Data coverage Both teams have at least 10 matches in the model window, but at least one has fewer than the full 20.

Projected vs produced

Expected goals
Middlesbrough The model projected 2.07 Produced 2.71 Difference +0.64
Cardiff City The model projected 1.19 Produced 0.85 Difference -0.34

Middlesbrough produced 0.64 xG more than projected

Projected before kick-off Produced on the night

The shots behind it

Middlesbrough Cardiff City
Shots
36
7
On target
12
3
Inside the box
23
5
xG per shot
0.08
0.12
Open play xG
2.36
0.53
Set-piece xG
0.36
0.34
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: 2.71 for Middlesbrough and 0.85 for Cardiff City.

Shot map

Both teams shown attacking the same goal for comparison.

Middlesbrough · Kyle Joseph · 44' · No goal · 4 m · 0.37 xG Cardiff City · Gabriel Osho · 40' · No goal · 3 m · 0.34 xG Middlesbrough · Tommy Conway · 58' · Goal · 11 m · 0.33 xG Middlesbrough · Amario Cozier-Duberry · 18' · No goal · 10 m · 0.22 xG Cardiff City · Jack Moylan · 68' · No goal · 11 m · 0.22 xG Middlesbrough · Will Lankshear · 53' · No goal · 5 m · 0.14 xG Middlesbrough · Amario Cozier-Duberry · 32' · No goal · 8 m · 0.14 xG Middlesbrough · Neto Borges · 63' · No goal · 15 m · 0.13 xG Middlesbrough · Neto Borges · 4' · No goal · 7 m · 0.12 xG Middlesbrough · Neto Borges · 19' · No goal · 15 m · 0.11 xG Cardiff City · Jack Moylan · 7' · No goal · 10 m · 0.10 xG Middlesbrough · Ashley Phillips · 76' · No goal · 7 m · 0.10 xG Cardiff City · Jack Moylan · 22' · Goal · 11 m · 0.10 xG Middlesbrough · Kyle Joseph · 34' · No goal · 9 m · 0.09 xG Middlesbrough · Aidan Morris · 55' · No goal · 5 m · 0.08 xG Middlesbrough · Neto Borges · 65' · No goal · 8 m · 0.07 xG Middlesbrough · Amario Cozier-Duberry · 36' · No goal · 15 m · 0.07 xG Middlesbrough · Jeremy Sarmiento · 90' · No goal · 20 m · 0.06 xG Middlesbrough · Amario Cozier-Duberry · 4' · No goal · 14 m · 0.05 xG Cardiff City · Cian Ashford · 13' · No goal · 16 m · 0.05 xG Middlesbrough · Aidan Morris · 45' · No goal · 22 m · 0.05 xG Middlesbrough · Will Lankshear · 80' · No goal · 19 m · 0.05 xG Middlesbrough · Sebastian Berhalter · 90' · No goal · 24 m · 0.04 xG Middlesbrough · Will Lankshear · 61' · Goal · 19 m · 0.04 xG Middlesbrough · Aidan Morris · 17' · No goal · 15 m · 0.04 xG Middlesbrough · Sebastian Berhalter · 81' · No goal · 22 m · 0.04 xG Cardiff City · Ollie Tanner · 3' · No goal · 23 m · 0.04 xG Middlesbrough · Tommy Conway · 3' · No goal · 24 m · 0.04 xG Middlesbrough · Amario Cozier-Duberry · 44' · No goal · 7 m · 0.04 xG Middlesbrough · Amario Cozier-Duberry · 51' · No goal · 18 m · 0.04 xG Middlesbrough · Aidan Morris · 55' · No goal · 2 m · 0.03 xG Middlesbrough · Amario Cozier-Duberry · 34' · No goal · 15 m · 0.03 xG Middlesbrough · Neto Borges · 37' · No goal · 9 m · 0.03 xG Middlesbrough · Adilson Malanda · 90' · No goal · 7 m · 0.03 xG Middlesbrough · Sebastian Berhalter · 88' · No goal · 18 m · 0.03 xG Cardiff City · Ollie Tanner · 45' · Goal · 19 m · 0.03 xG Middlesbrough · Tommy Conway · 52' · No goal · 5 m · 0.02 xG Middlesbrough · Amario Cozier-Duberry · 29' · No goal · 24 m · 0.02 xG Middlesbrough · Kyle Joseph · 20' · No goal · 14 m · 0.02 xG Middlesbrough · Maximilian Arfsten · 88' · No goal · 21 m · 0.02 xG Middlesbrough · Callum Brittain · 45' · No goal · 25 m · 0.02 xG Middlesbrough · Aidan Morris · 77' · No goal · 26 m · 0.02 xG Middlesbrough · Adilson Malanda · 90' · No goal · 13 m · 0.02 xG

All shots

43 shots · 3.59 xG

Hover or tap a shot, or step through them with the arrows.

  • Middlesbrough
  • Cardiff City
  • Filled = goal
  • Dot area = xG (the smallest chances drawn at a minimum size)

Recent form

Last 6 · xG per match
Middlesbrough

1.96 xG created 1.15 xGA

  • W 2.53 created, 1.03 conceded against Queens Park Rangers
  • W 2.07 created, 1.62 conceded against Norwich City
  • D 1.52 created, 1.69 conceded against Millwall
  • D 2.14 created, 1.23 conceded against Birmingham City
  • W 0.90 created, 0.68 conceded against Wolverhampton
  • W 2.57 created, 0.65 conceded against Stoke City
Cardiff City

2.35 xG created 1.47 xGA

  • L 1.37 created, 2.07 conceded against Portsmouth
  • D 3.60 created, 1.11 conceded against Stoke City
  • L 1.79 created, 0.48 conceded against Bolton Wanderers
  • W 2.60 created, 1.26 conceded against Charlton Athletic
  • L 1.05 created, 2.42 conceded against Blackburn Rovers
  • W 3.67 created, 1.46 conceded against Watford

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

Pre-match model & market record

6 qualified edges flagged1 won5 lost

  • Lost
  • Lost
  • Lost
  • Lost
  • Won
  • Lost
View pre-match record
The outcomes the model flagged on Middlesbrough against Cardiff City before kick-off, in the order they ranked, with the price, the edge and what became of each.
Selection Price Edge Result
Middlesbrough at most 1 goal 3.40 +23.9% Lost
Under 2.5 goals 3.40 +17.5% Lost
Middlesbrough not to score 11.00 +16.7% Lost
Cardiff City to win 6.25 +16.6% Lost
Draw 4.75 +14.9% Won
Under 1.5 goals 8.00 +2.4% Lost

Pre-match model vs market

Outcome Model Market Difference Fair odds
Middlesbrough 57.1% 65.1% −7.9 pp 1.75
Draw 24.2% 19.9% +4.3 pp 4.13
Cardiff City 18.7% 15.1% +3.6 pp 5.36

Other markets

Outcome Model Market Difference Fair odds
Middlesbrough to score 89.4% 91.3% −1.9 pp 1.12
Middlesbrough not to score 10.6% 8.7% +1.9 pp 9.42
Cardiff City to score 72.5% 68.7% +3.8 pp 1.38
Cardiff City not to score 27.5% 31.3% −3.8 pp 3.64
Both teams to score 66.1% 62.5% +3.6 pp 1.51
Both teams not to score 33.9% 37.5% −3.6 pp 2.95
Middlesbrough 2+ goals 63.6% 72.3% −8.8 pp 1.57
Middlesbrough at most 1 goal 36.4% 27.7% +8.8 pp 2.75
Cardiff City 2+ goals 34.0% 35.5% −1.5 pp 2.94
Cardiff City at most 1 goal 66.0% 64.5% +1.5 pp 1.52
Over 1.5 goals 87.2% 88.1% −0.9 pp 1.15
Under 1.5 goals 12.8% 11.9% +0.9 pp 7.81
Over 2.5 goals 65.4% 71.8% −6.4 pp 1.53
Under 2.5 goals 34.6% 28.2% +6.4 pp 2.89

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)
Middlesbrough sample
20 matches
Cardiff City sample
10 matches
Computed
59 minutes before kick-off
Prices taken
1 hour 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.