Bayer Leverkusen vs Borussia Dortmund

11 May 2025 · Bundesliga · 2024/25 · Referee Deniz Aytekin

Full time 2 – 4

Half-time: 1–2

  • Jeremie Frimpong 31’
  • Jonas Hofmann 90+2’
  • Julian Brandt 33’
  • Julian Ryerson 43’
  • Karim Adeyemi 73’
  • Serhou Guirassy 77’

Match summary

Borussia Dortmund came from behind to win 4-2 away at Bayer Leverkusen. Borussia Dortmund led 2-1 at half-time.

In the first half, Jeremie Frimpong put Bayer Leverkusen ahead in the 31st minute, set up by Florian Wirtz, Julian Brandt equalised in the 33rd minute, set up by Karim Adeyemi, and Julian Ryerson put Borussia Dortmund in front in the 43rd minute, set up by Pascal Groß. In the second half, Karim Adeyemi made it 1-3 in the 73rd minute, set up by Julian Brandt, Serhou Guirassy made it 1-4 in the 77th minute, and Jonas Hofmann pulled one back to make it 2-4 with a header in stoppage time, set up by Florian Wirtz.

Bayer Leverkusen can feel hard done by, creating 1.91 expected goals (xG) from 19 shots to Borussia Dortmund's 1.39 from 9.

Match stats

Bayer Leverkusen Borussia Dortmund
19 Shots 9
10 Shots on Target 5
12 Corners 0
0 Yellow Cards 2
0 Red Cards 0
1.90 xG 1.39
1.90 Non-penalty xG 1.39
10 Deep Completions 7

Key events

Bayer Leverkusen Borussia Dortmund
Kick-off
Jeremie Frimpong
Assist: Florian Wirtz
1-0 (Bayer Leverkusen)
31’
33’
Julian Brandt
Assist: Karim Adeyemi
1-1 (Borussia Dortmund)
43’
Julian Ryerson
Assist: Pascal Groß
1-2 (Borussia Dortmund)
Half-time1-2
73’
Karim Adeyemi
Assist: Julian Brandt
1-3 (Borussia Dortmund)
77’
Serhou Guirassy1-4 (Borussia Dortmund)
Jonas Hofmann
Assist: Florian Wirtz
2-4 (Bayer Leverkusen)
90+2’
Full-time2-4

Bookings

Card times are not on file for this game, so they are listed without a minute.

Borussia Dortmund
  • Pascal Groß
  • Felix Nmecha

How the chances added up

Running total of expected goals (xG) for each side through the match. xG rates each chance by how often similar shots are scored. A goal is marked where it was scored.

0.0 0.5 1.0 1.5 2.0 2.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.91 1.39 31’ Jeremie Frimpong (Bayer Leverkusen), 1-0 31’ 33’ Julian Brandt (Borussia Dortmund), 1-1 33’ 43’ Julian Ryerson (Borussia Dortmund), 1-2 43’ 73’ Karim Adeyemi (Borussia Dortmund), 1-3 73’ 77’ Serhou Guirassy (Borussia Dortmund), 1-4 77’ 90+2’ Jonas Hofmann (Bayer Leverkusen), 2-4 90+2’ 0.0 0.5 1.0 1.5 2.0 2.5 0’ 15’ 30’ 45’ 60’ 75’ 90’ HT 1.91 1.39 31’ Jeremie Frimpong (Bayer Leverkusen), 1-0 Frimpong 31’ 33’ Julian Brandt (Borussia Dortmund), 1-1 Brandt 33’ 43’ Julian Ryerson (Borussia Dortmund), 1-2 Ryerson 43’ 73’ Karim Adeyemi (Borussia Dortmund), 1-3 Adeyemi 73’ 77’ Serhou Guirassy (Borussia Dortmund), 1-4 Guirassy 77’ 90+2’ Jonas Hofmann (Bayer Leverkusen), 2-4 Hofmann 90+2’
Bayer Leverkusen 1.91 xGBorussia Dortmund 1.39 xG Goal

Tap a goal for the scorer and score.

Shot map

Every shot and where it was taken from.

 Borussia Dortmund attacking Bayer Leverkusen attacking 
73’ Karim Adeyemi (Borussia Dortmund), open play, 0.57 xG, goal 33’ Julian Brandt (Borussia Dortmund), open play, 0.50 xG, goal 40’ Nathan Tella (Bayer Leverkusen), open play, 0.47 xG, saved 90+2’ Jonas Hofmann (Bayer Leverkusen), open play, 0.33 xG, goal 41’ Florian Wirtz (Bayer Leverkusen), open play, 0.15 xG, saved 49’ Amine Adli (Bayer Leverkusen), open play, 0.12 xG, saved 11’ Álex Grimaldo (Bayer Leverkusen), open play, 0.09 xG, blocked 50’ Amine Adli (Bayer Leverkusen), open play, 0.09 xG, hit the woodwork 15’ Jonathan Tah (Bayer Leverkusen), set piece, 0.09 xG, off target 27’ Nathan Tella (Bayer Leverkusen), open play, 0.09 xG, saved 31’ Jeremie Frimpong (Bayer Leverkusen), open play, 0.08 xG, goal 72’ Serhou Guirassy (Borussia Dortmund), open play, 0.08 xG, saved 77’ Serhou Guirassy (Borussia Dortmund), open play, 0.08 xG, goal 3’ Florian Wirtz (Bayer Leverkusen), open play, 0.07 xG, blocked 43’ Julian Ryerson (Borussia Dortmund), open play, 0.07 xG, goal 88’ Aleix García (Bayer Leverkusen), open play, 0.06 xG, saved 4’ Florian Wirtz (Bayer Leverkusen), from a corner, 0.05 xG, saved 52’ Florian Wirtz (Bayer Leverkusen), open play, 0.04 xG, blocked 11’ Robert Andrich (Bayer Leverkusen), open play, 0.03 xG, saved 16’ Nathan Tella (Bayer Leverkusen), open play, 0.03 xG, blocked 52’ Piero Hincapié (Bayer Leverkusen), open play, 0.03 xG, blocked 54’ Marcel Sabitzer (Borussia Dortmund), open play, 0.03 xG, off target 26’ Pascal Groß (Borussia Dortmund), open play, 0.03 xG, blocked 49’ Florian Wirtz (Bayer Leverkusen), open play, 0.03 xG, blocked 80’ Florian Wirtz (Bayer Leverkusen), from a corner, 0.03 xG, off target 36’ Julian Brandt (Borussia Dortmund), open play, 0.02 xG, off target 8’ Álex Grimaldo (Bayer Leverkusen), from a corner, 0.02 xG, saved 56’ Ramy Bensebaini (Borussia Dortmund), open play, 0.02 xG, blocked 73’ Karim Adeyemi (Borussia Dortmund), open play, 0.57 xG, goal 33’ Julian Brandt (Borussia Dortmund), open play, 0.50 xG, goal 40’ Nathan Tella (Bayer Leverkusen), open play, 0.47 xG, saved 90+2’ Jonas Hofmann (Bayer Leverkusen), open play, 0.33 xG, goal 41’ Florian Wirtz (Bayer Leverkusen), open play, 0.15 xG, saved 49’ Amine Adli (Bayer Leverkusen), open play, 0.12 xG, saved 11’ Álex Grimaldo (Bayer Leverkusen), open play, 0.09 xG, blocked 50’ Amine Adli (Bayer Leverkusen), open play, 0.09 xG, hit the woodwork 15’ Jonathan Tah (Bayer Leverkusen), set piece, 0.09 xG, off target 27’ Nathan Tella (Bayer Leverkusen), open play, 0.09 xG, saved 31’ Jeremie Frimpong (Bayer Leverkusen), open play, 0.08 xG, goal 72’ Serhou Guirassy (Borussia Dortmund), open play, 0.08 xG, saved 77’ Serhou Guirassy (Borussia Dortmund), open play, 0.08 xG, goal 43’ Julian Ryerson (Borussia Dortmund), open play, 0.07 xG, goal 3’ Florian Wirtz (Bayer Leverkusen), open play, 0.07 xG, blocked 88’ Aleix García (Bayer Leverkusen), open play, 0.06 xG, saved 4’ Florian Wirtz (Bayer Leverkusen), from a corner, 0.05 xG, saved 52’ Florian Wirtz (Bayer Leverkusen), open play, 0.04 xG, blocked 52’ Piero Hincapié (Bayer Leverkusen), open play, 0.03 xG, blocked 11’ Robert Andrich (Bayer Leverkusen), open play, 0.03 xG, saved 16’ Nathan Tella (Bayer Leverkusen), open play, 0.03 xG, blocked 26’ Pascal Groß (Borussia Dortmund), open play, 0.03 xG, blocked 54’ Marcel Sabitzer (Borussia Dortmund), open play, 0.03 xG, off target 80’ Florian Wirtz (Bayer Leverkusen), from a corner, 0.03 xG, off target 49’ Florian Wirtz (Bayer Leverkusen), open play, 0.03 xG, blocked 36’ Julian Brandt (Borussia Dortmund), open play, 0.02 xG, off target 8’ Álex Grimaldo (Bayer Leverkusen), from a corner, 0.02 xG, saved 56’ Ramy Bensebaini (Borussia Dortmund), open play, 0.02 xG, blocked
Size shows xG Goal On target Off target or blocked

Hover or tap a shot for the player, minute and xG.

Player stats

PlayerPosMinGAShxGxAKPCards
Lukas Hradecky GK900 0.000.000
Edmond Tapsoba DEF900 0.000.000
Jonathan Tah DEF901 0.090.000
Piero Hincapié DEF831 0.030.031
Jeremie Frimpong MID9011 0.080.112
Álex Grimaldo MID902 0.110.192
Granit Xhaka MID830 0.000.091
Robert Andrich MID721 0.030.000
Florian Wirtz MID9026 0.360.564
Amine Adli MID642 0.220.603
Nathan Tella FWD643 0.590.172
Patrik Schick Sub260 0.000.000
Jonas Hofmann Sub2611 0.330.000
Exequiel Palacios Sub180 0.000.000
Aleix García Sub71 0.060.000
Arthur Sub70 0.000.000

Starters first, then substitutes. xA is expected assists.

Before kick-off

Bayer Leverkusen win 38% Avg odds 2.54
Draw 25% Avg odds 3.80
Borussia Dortmund win 37% Avg odds 2.55

Chances implied by the average closing odds, with the bookmaker margin removed.

Form going into the game

Last five league games before this one, oldest first. Select one to open it.

Previous and next meeting

Shots, expected goals and player data from Understat. Results and odds from football-data.co.uk. Referee data before 2025/26 from the Transfermarkt datasets project.