RasenBallsport Leipzig v Borussia Dortmund — Prediction, Odds & Stats
Saturday 21 February 2026 · GER-Bundesliga · 2526
Bundesliga
xG Prediction generated
AI prediction
ai-blend-oos No snapshot has been taken for this fixture yet; this is the stored price.Probabilities, not certainties. How they are made: the methodology.
Was this pick made in advance?
-oos is out of sample: it was fitted only on matches
played before this one, so its pick is a genuine forecast rather than hindsight.
Anything without that suffix was fitted on all available data.What the chances say
RasenBallsport Leipzig are finishing below their chances — 2.3 goals fewer than expected across 10 matches, despite creating the openings.
Borussia Dortmund are finishing below their chances — 2.3 goals fewer than expected across 10 matches, despite creating the openings. They are also conceding fewer than expected — 2.7 goals saved beyond what the chances suggest.
Finishing swings far more than chance creation, so a gap this size usually narrows. Over ten matches it is suggestive, not settled — a genuinely elite finisher beats expected goals for years.
What the model said
| Model | Home / Draw / Away | Expected goals | Likeliest score | O2.5 | BTTS | Outcome |
|---|---|---|---|---|---|---|
| ai-blend-oos | 1.53–1.30 | 0% | 0% | 0% | Home ✗ | |
| dc-xg-oos | 1.81–1.64 | 1-1 9% | 67% | 67% | Home ✗ |
A model whose name ends -oos was produced by the walk-forward backtest:
it was fitted only on matches played before this one, so the pick is genuinely out of sample.
Reading the xG timeline
Expected goals by minute
Reading the shot map
Shot map
Every shot
| Min | Team | Player | xG | Situation | Body part | Result | Assisted by |
|---|---|---|---|---|---|---|---|
| 7' |
|
Maximilian Beier | 0.28 | Open Play | Right Foot | Saved Shot | Julian Ryerson |
| 7' |
|
Rômulo | 0.10 | Open Play | Right Foot | Saved Shot | Xaver Schlager |
| 11' |
|
Bote Baku | 0.02 | From Corner | Left Foot | Blocked Shot | Brajan Gruda |
| 16' |
|
Marcel Sabitzer | 0.05 | Open Play | Right Foot | Missed Shot | Julian Ryerson |
| 18' |
|
Nicolas Seiwald | 0.09 | Set Piece | — | Missed Shot | David Raum |
| 19' |
|
Christoph Baumgartner | 0.61 | Open Play | Right Foot | Goal | Yan Diomande |
| 27' |
|
Christoph Baumgartner | 0.67 | Open Play | Right Foot | Missed Shot | Rômulo |
| 32' |
|
Nicolas Seiwald | 0.15 | Open Play | — | Missed Shot | Yan Diomande |
| 36' |
|
Christoph Baumgartner | 0.12 | Open Play | Right Foot | Missed Shot | David Raum |
| 37' |
|
Felix Nmecha | 0.08 | Open Play | Right Foot | Saved Shot | Daniel Svensson |
| 38' |
|
Christoph Baumgartner | 0.61 | Open Play | Right Foot | Goal | David Raum |
| 38' |
|
Yan Diomande | 0.08 | Open Play | Right Foot | Blocked Shot | Christoph Baumgartner |
| 42' |
|
Marcel Sabitzer | 0.08 | Direct Freekick | Right Foot | Saved Shot | — |
| 43' |
|
Waldemar Anton | 0.05 | From Corner | — | Blocked Shot | Daniel Svensson |
| 48' |
|
Marcel Sabitzer | 0.02 | Set Piece | — | Blocked Shot | Maximilian Beier |
| 49' |
|
Ramy Bensebaini | 0.14 | From Corner | — | Missed Shot | Julian Ryerson |
| 49' |
|
Rômulo | 0.00 | From Corner | — | Own Goal | — |
| 66' |
|
Antonio Nusa | 0.13 | Open Play | Right Foot | Blocked Shot | Yan Diomande |
| 67' |
|
Castello Lukeba | 0.05 | From Corner | — | Blocked Shot | David Raum |
| 72' |
|
Bote Baku | 0.56 | Open Play | Right Foot | Missed Shot | Yan Diomande |
| 77' |
|
Karim Adeyemi | 0.08 | Open Play | Left Foot | Blocked Shot | — |
| 80' |
|
Fabio Silva | 0.11 | Open Play | Right Foot | Blocked Shot | Yan Couto |
| 82' |
|
Yan Diomande | 0.28 | Open Play | Right Foot | Missed Shot | Antonio Nusa |
| 92' |
|
Conrad Harder | 0.05 | Open Play | Left Foot | Missed Shot | — |
| 94' |
|
Fabio Silva | 0.36 | Open Play | Left Foot | Goal | Karim Adeyemi |
| 97' |
|
Julian Brandt | 0.11 | Open Play | Right Foot | Saved Shot | Fabio Silva |
Players
Borussia Dortmund
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Ramy Bensebaini DC | 90 | 0 | 0 | 1 | 0 | 0.14 | 0.00 | 0.28 |
| Waldemar Anton DC | 90 | 0 | 0 | 1 | 0 | 0.05 | 0.00 | 0.16 |
| Julian Ryerson DMR | 90 | 0 | 0 | 0 | 3 | 0.00 | 0.47 | 0.88 |
| Jobe Bellingham MC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.22 |
| Gregor Kobel GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.36 |
| Daniel Svensson DML | 90 | 0 | 0 | 0 | 2 | 0.00 | 0.12 | 0.08 |
| Marcel Sabitzer AMC | 78 | 0 | 0 | 3 | 0 | 0.14 | 0.00 | 0.13 |
| Serhou Guirassy FW | 73 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.08 |
| Felix Nmecha MC | 67 | 0 | 0 | 1 | 0 | 0.08 | 0.00 | 0.08 |
| Maximilian Beier AMC | 66 | 0 | 0 | 1 | 1 | 0.28 | 0.02 | 0.28 |
| Luca Reggiani DC | 66 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Julian Brandt Sub | 24 | 0 | 0 | 1 | 0 | 0.11 | 0.00 | 0.58 |
| Yan Couto Sub | 24 | 0 | 0 | 0 | 1 | 0.00 | 0.11 | 0.11 |
| Carney Chukwuemeka Sub | 23 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Fabio Silva Sub | 17 | 1 | 0 | 2 | 1 | 0.47 | 0.11 | 0.66 |
| Karim Adeyemi Sub | 12 | 0 | 1 | 1 | 1 | 0.08 | 0.36 | 0.66 |
RasenBallsport Leipzig
| Player | Min | G | A | Sh | KP | xG | xA | xGChain |
|---|---|---|---|---|---|---|---|---|
| Christoph Baumgartner MC | 90 | 2 | 0 | 4 | 1 | 2.01 | 0.08 | 2.42 |
| Yan Diomande FWL | 90 | 0 | 1 | 2 | 4 | 0.36 | 1.45 | 2.63 |
| Nicolas Seiwald MC | 90 | 0 | 0 | 2 | 0 | 0.24 | 0.00 | 1.37 |
| Castello Lukeba DC | 90 | 0 | 0 | 1 | 0 | 0.05 | 0.00 | 0.89 |
| David Raum DL | 90 | 0 | 1 | 0 | 4 | 0.00 | 0.87 | 2.18 |
| Willi Orban DC | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.74 |
| Maarten Vandevoordt GK | 90 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.12 |
| Bote Baku DR | 84 | 0 | 0 | 2 | 0 | 0.58 | 0.00 | 1.25 |
| Brajan Gruda FWR | 84 | 0 | 0 | 0 | 1 | 0.00 | 0.02 | 0.20 |
| Rômulo FW | 83 | 0 | 0 | 1 | 1 | 0.10 | 0.67 | 1.62 |
| Xaver Schlager MC | 67 | 0 | 0 | 0 | 1 | 0.00 | 0.10 | 0.98 |
| Antonio Nusa Sub | 23 | 0 | 0 | 1 | 1 | 0.13 | 0.28 | 0.40 |
| Conrad Harder Sub | 7 | 0 | 0 | 1 | 0 | 0.05 | 0.00 | 0.05 |
| Ezechiel Banzuzi Sub | 6 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Benjamin Henrichs Sub | 6 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |
| Max Finkgrafe Sub | 1 | 0 | 0 | 0 | 0 | 0.00 | 0.00 | 0.00 |