Pred1xAI SPORTSANALYTICS
All articles
Football 2 min read

RB Leipzig 2-3 Manchester City — Haaland's 0.623 xG winner settles it

A 0.00-xG opener, a 0.623-xG winner and 2.20-0.87 in expected goals: City take a wild Champions League night in Leipzig.

By Pred1xPublished How we produce our articles
ENPTES
RB Leipzig 2-3 Manchester City — Haaland's 0.623 xG winner settles it
UEFA Champions League

UEFA Champions League

FOOTBALL
Red Bull ArenaLeipzig
FINAL04/11WED2026
RB Leipzig
RB Leipzig
2:3
Manchester City
Manchester CityWinner
Half 0-1

Highlights

Goal timeline

1st half

37'⚽Castello Lukeba0-1

2nd half

49'⚽Ridle Baku (Brajan Gruda)1-1
58'⚽Enzo Fernández (Iliman Ndiaye)1-2
61'⚽Antonio Nusa (Christopher Nkunku)2-2
78'⚽Erling Haaland (Elliot Anderson)2-3

One goal carried an expected-goals value of 0.00. The winner carried 0.623. Those two numbers bracket Manchester City's night in Leipzig: a 37th-minute opener credited to defender Castello Lukeba, and Erling Haaland's 78th-minute decision. City finished with 65% possession and 2.20 xG to Leipzig's 0.87 — the scoreline, 2-3, tracked the model.

0.87–2.20 xG5 goals
goal5 save7 post1 block4 miss10
RB LeipzigManchester City
HA8' · Rayan Cherki · M · xG 0.08 · miss14' · Antonio Nusa · F · xG 0.05 · save14' · Christoph Baumgartner · M · xG 0.02 · block17' · David Raum · D · xG 0.10 · block30' · Christoph Baumgartner · M · xG 0.04 · miss31' · Brajan Gruda · M · xG 0.12 · miss36' · Phil Foden · M · xG 0.07 · miss37' · Castello Lukeba · D · goal39' · Erling Haaland · F · xG 0.14 · save40' · Nico O'Reilly · D · xG 0.21 · miss42' · Brajan Gruda · M · xG 0.02 · save47' · Christoph Baumgartner · M · xG 0.04 · save49' · Ridle Baku · D · xG 0.04 · goal52' · Ezechiel Banzuzi · M · xG 0.05 · miss53' · Erling Haaland · F · xG 0.32 · save55' · Ridle Baku · D · xG 0.06 · save58' · Enzo Fernández · M · xG 0.35 · goal61' · Antonio Nusa · F · xG 0.20 · goal73' · Tidiam Gomis · F · xG 0.06 · block74' · Rocco Reitz · M · xG 0.02 · miss75' · Rayan Cherki · M · xG 0.15 · save76' · Elliot Anderson · M · xG 0.07 · miss78' · Erling Haaland · F · xG 0.62 · goal84' · Rayan Cherki · M · xG 0.08 · post90' · Ezechiel Banzuzi · M · xG 0.07 · miss90' · Jérémy Doku · M · xG 0.08 · miss90' · Rayan Cherki · M · xG 0.04 · block
Ball size = xG. Hover a ball for minute, player and xG. Top half: home attacks up; bottom half: away attacks down.

The opener came from almost nothing — 0.00 xG, a Leipzig name, a City lead. To halftime it stayed 0-1, City owning the ball and spending chances freely: Phil Foden off target at 36, Nico O'Reilly passing up a 0.207-xG opening at 40, Haaland denied on 39. Leipzig's reply came quickly after the break, Ridle Baku converting a modest 0.035-xG chance from Brajan Gruda's assist to make it 1-1 on 49 minutes.

012337' Castello Lukeba49' Ridle Baku58' Enzo Fernández61' Antonio Nusa78' Erling Haaland0'96'
RB Leipzig 0.87Manchester City 2.20

Then the scoreboard spun. Enzo Fernández restored City's lead on 58, converting from 0.352 expected goals after Iliman Ndiaye's work. Christopher Nkunku, four minutes after entering for Christoph Baumgartner, set up Antonio Nusa, whose 0.197-xG finish made it 2-2 on 61. For 17 minutes the game hung there, both benches emptying, until Elliot Anderson changed the arithmetic.

Possession

RB LeipzigvsManchester City
35%
65%poss.

Team stats

RB LeipzigvsManchester City
0.87
xG
2.2

Haaland's night was a study in persistence. Denied on 39, denied again on a 0.32-xG effort at 53, he finally met the game's premium chance when Anderson's pass found him on 78. From 0.623 expected goals, there was only one outcome. Rayan Cherki struck the post in the 84th and Ezechiel Banzuzi dragged Leipzig's stoppage-time reply wide from close range, but the winner had already banked the points.

Leipzig matched City on volume — 14 shots to 13 — and lost on every other number. On a Champions League night decided by chance quality rather than chance count, City's numbers were simply bigger.

Read next