+ 5

Big win!

Three wins from three for Dortmund in 2023 and they're up to fourth - just three points off leaders Bayern. Leverkusen's winning run comes to an end and they drop to ninth this weekend.
+ 2

A record

Leverkusen's 18 attempts is a record under Alonso. But the bottom line is that no goals have come from those.
Goal attempts
12off target
6on target
4off target
2on target
+ 1


Leverkusen have three bites at the cherry at a corner but all are blocked as we go into four additional minutes.

Speed check: The fastest player in the game after 90 minutes

Speed check: The fastest player in the game after 90 minutes
Through high-end camera technology and machine learning, the speed of each player is evaluated in real time. Top speed then means, the fastest measured single frame of a player/game.

350 up for Reus

On comes Marco Reus for his 350th Bundesliga appearance. Mats Hummels joins him for his 403rd in the top flight.

Glimmer of hope?

Glimmer of hope?
The stats may suggest Leverkusen have no chance, but Dortmund were 2-0 up even later in their game against Bremen earlier this season and still lost 3-2.
10.9 %
0.1 %


Immediately into the action as he meets a Frimpong cross from the right, but Azmoun plants his header over. Thumbs up from the Iranian for the delivery.

Final push

Alonso sends on centre-forward Azmoun for the final 10 minutes.


Excellent pass between full-back and centre-back from Bakker. It's on Diaby's stronger left and he goes across Kobel. BVB keeper sticks out a leg, though, to divert it away from goal. That's six saves tonight from Kobel.


Deft header from the midfielder as he runs onto Wolf's curling cross. It's only a matter of inches wide of the far post.

It's about the quality of chances

The xGoals value of a club is calculated from the sum of all goal probabilities (goals and shots on goal) of that team. During a match, it’s easy to see whether the club is performing better than expected (goals > xGoals) - or maybe even higher (xGoals > goals).
Bayer have had more efforts but none have amounted to anything. Meanwhile, Dortmund have two goals from fewer opportunities.

Brandt has a crack

A well-struck effort from 20 yards but straight into the arms of Hradecky. Actually the first save he's made today.

Almost another own goal!

Tapsoba slides to intercept another cross from the right and accidentally turns the ball towards his own goal again. He has Frimpong to thank this time that it didn't cross the line.

Haller's day done

No goal and, to be honest, not many chances, but Haller will feel great to have got 60 minutes under his belt on his first start since cancer. Modeste is on in his place.

Özcan suspended

Bit of a silly booking as Özcan kicks the ball away. It's his fifth of the campaign so he'll miss next weekend's home game against Freiburg.

Know the feeling

That was the second own goal of Tapsoba's Bundesliga career. The first came in a 2-1 loss in Frankfurt in January 2021.


Close but no cigar for the hosts as Adli meets a cross from the right but only puts his header at Kobel.

In Borussia's hands

In Borussia's hands
Two goals have more than doubled Dortmund's chances of victory in this game. The stats now show Leverkusen have just a 2% win probability with still over half an hour to go.
41.1 %
88.8 %

Dortmund double!

Superb stuff from Bellingham as he wins the ball deep on the left of the field, drives inside and spreads it up to Wolf high on the right. His cross into the six-yard box is directed at Bellingham, who'd continued his run into the box. The England international wheels away celebrating as the ball hits the back of the net, but it was Tapsoba who got the telling touch to beat his own goalkeeper.

Edmond Tapsoba


Edmond Tapsoba

Denied twice!

Diaby now forces a save out of Kobel from a wide position on the left. The goalkeeper can't hold and Adli is lurking, but a combination of yellow shirts get in the way to block from close range.


Bayer quickly on the front foot and Adli is hauled back by Süle. Wirtz leaves the free-kick for the left foot of Diaby, but it's a poor delivery and cleared.

Will we see a response?

It's the first time Leverkusen have trailed at the break under Alonso at home in the Bundesliga. Will we see a response from the hosts as we resume the action?

The difference

Dortmund struck with their only real attack of note and now lead. Leverkusen started brightly and came close through Diaby, but the hosts definitely faded as the half went on and allowed BVB into the game.
+ 1

Added time

Just the extra 60 seconds at the end of the first half.

Tightened up

The last Bayer effort on goal was in the 21st minute.
Goal attempts
3off target
2on target
2off target
1on target

BVB make it count

The xGoals value of a club is calculated from the sum of all goal probabilities (goals and shots on goal) of that team. During a match, it’s easy to see whether the club is performing better than expected (goals > xGoals) - or maybe even higher (xGoals > goals).
The goal was their first effort on target this evening.

Long time coming

It's Adeyemi's first Bundesliga goal following his summer arrival from Salzburg, coming with his 18th attempt. He came close to breaking his duck in this fixture on the opening weekend but Marco Reus got the final touch on the only goal of the game. You can see that in the highlights from Matchday 1.

Quick card

And the goalscorer quickly gets his name in the referee's notebook as he slides in and catches Diaby at the other end. His fourth booking of the season to go with his first goal.

Adeyemi slots home!

Clinical from Dortmund. They win the ball inside the Leverkusen half, Brandt exchanges a one-two with Bellingham on the right. The former's low cross is dummied by Haller around the penalty spot, leaving it for Adeyemi completely free behind, and he slots past Hradecky into the bottom right corner.
Karim Adeyemi
Goal probability
Goal probability
Goal probability determines the likelihood that the ball will land in the goal from every position on the pitch. The value is based on large amounts of data from previous years; factors such as shot angle, distance to goal and opponent pressure - as well as mathematical models.
47 %

Speed check: The fastest player in the game after 30 minutes

Speed check: The fastest player in the game after 30 minutes
Through high-end camera technology and machine learning, the speed of each player is evaluated in real time. Top speed then means, the fastest measured single frame of a player/game.
Emre Can
Emre Can34.13km/h
Moussa Diaby
Moussa Diaby33.23km/h

Adeyemi is getting more into the game


First card

Tapsoba catches Adeyemi on his ankle on the touchline and gets the first card of the game.

Excellent recovery

Dortmund win a corner as Brandt sees a cross blocked. It's immediately cleared and Leverkusen look to break. Wirtz is about to pick a pass into space but Adeyemi races back to pinch his pocket and cut out the danger.

Looking for that final ball

BVB are getting forward a bit more now and looking for men in the box. Bellingham attempts to find Adeyemi with a through ball but it's overhit and allows Hradecky to collect.

All Leverkusen going forward

Goal attempts
3off target
2on target
0off target
0on target

Hands up if you're making your first start for Dortmund

The last time we saw Haller start a Bundesliga game was in Eintracht Frankfurt's 3-0 win over VfB Stuttgart on 31 March 2019.

Bayer taking control

Possession (%)


Wirtz carves open the Dortmund defence with a pass into the path of Diaby. It's on his weaker right to the right of goal as he goes for the far corner. Superb reaction from Kobel to tip it wide.

Süle over

Long free-kick is pumped into the Leverkusen box. It's only headed clear as far as Süle, who hits it on the volley. Well off target though.

Adeyemi battles

And Frimpong is almost caught out as the ball breaks in the box and Adeyemi gets there in front of him. The Dortmund man gets the better of the Dutch defender at first, but Frimpong recovers to get in a block.

A back 3.5 from Leverkusen

It's definitely a back four from Xabi Alonso but Frimpong has licence to push high and wide. When he does, Hincapie tucks in to form a three for cover.


Bayer on the front foot again as Amiri creates a yard of space for a shot on the edge of the box. Just left of the D, he goes for the near corner but drags just wide with Kobel on the stretch.

Palacios has a go

First effort of the game comes from the reigning world champion but Palacios's effort is easily held by Kobel.

Strap in!

The final game of Matchday 18 is under way. What will these two deliver this time?

Goal mania

The last 12 meetings between Leverkusen and BVB have yielded an incredible haul of 58 goals. You really do not want to miss this one. Kick-off is imminent...

Watch: Wirtz vs. Bellingham - teen titans

In the red corner, Florian Wirtz. In the black-and-yellow corner, Jude Bellingham. It's going to be some battle between the 19-year-old pair - two of the very best young players in the world right now.

Alonso's Leverkusen on the up

Leverkusen have claimed 19 points from nine Bundesliga matches under Alonso, compared to five across the first eight of the campaign. "We're defending better, the spaces are tighter, everybody helps each other. That gives us great security and in turn we are also stronger when we're on the attack," the Spanish coach said of his team's about-turn in fortunes.

Title talk in Dortmund

"Are we in the mix, or are we playing catch-up? We want to avoid the latter," Terzic said in his pre-match press conference, in reference to the title race. "We want to be the ones who start the new year with nine points and are in the thick of things."

Watch: The stage is set


Watch: Haller's recovery

Diagnosed with cancer in July, Haller underwent two surgeries and four rounds of chemotherapy before getting the all clear to return to the first-team fold in time for the start of 2023. Relive his extraordinary journey.

Spoiler alert

When these two meet, there's no shortage of goals. Eight of the last 10 have witnessed at least four!

Watch: Leverkusen 2-0 Bochum

Florian Wirtz scored for the first time in almost a year for a Leverkusen team enjoying a five-match winning run, dating back to early November.

Watch: Mainz 1-2 Dortmund

Haller set up Gio Reyna as Dortmund made it two straight wins in Mainz in midweek.

Leverkusen team news

Amine Adli gets the nod in the false No.9 role, with Adam Hlozek making way. World Cup winner Exequiel Palacios also gets a recall in the centre of midfield. Chelsea loanee Callum Hudoson-Odoi drops to the bench.

Haller starts!

What a moment for Sebastien Haller. After overcoming testicular cancer and making two substitute appearances to start the year, the Dortmund striker makes his full debut for the club. Edin Terzic also welcomes back Jude Bellingham from suspension, while Marius Wolf comes in at left-back. In a further piece of good news, captain Marco Reus is among the substitutes following injury.

Leverkusen starting line-up

Hradecky (c) - Frimpong, Tapsoba, Tah, Hincapie - Palacios, Andrich - Diaby, Wirtz, Amiri - Adli

Leverkusen subs

Lomb, Bakker, Azmoun, Kossounou, Demirbay, Sinkgraven, Hlozek, Fosu-Mensah, Bellarabi

Dortmund starting line-up

Kobel - Wolf, Süle (c), Schlotterbeck, Ryerson - Can, Özcan, Bellingham - Adeyemi, Haller, Brandt

Dortmund subs

Meyer, Reyna, Reus, Guerreiro, Hummels, Moukoko, Modeste, Malen, Bynoe-Gittens


Borussia Dortmund have the chance to close the gap on Bayern Munich to three points - but to do that they must overcome Xabi Alonso's in-form Bayer Leverkusen. Stay tuned!

Watch: Get ready for Leverkusen vs. Dortmund!