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.
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
350 up for Reus
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.
Glimmer of hope?
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.
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.
Bayer have had more efforts but none have amounted to anything. Meanwhile, Dortmund have two goals from fewer opportunities.
It's about the quality of chances
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.
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.
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.
In Borussia's hands
© Lars Baron/Getty Images
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?
© Lars Baron/Getty Images
Just the extra 60 seconds at the end of the first half.
The goal was their first effort on target this evening.
BVB make it count
Long time coming
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.
Speed check: The fastest player in the game after 30 minutes
Adeyemi is getting more into the game
© IMAGO/nordphoto GmbH / Bratic/IMAGO/Nordphoto
Tapsoba catches Adeyemi on his ankle on the touchline and gets the first card of the game.
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
Hands up if you're making your first start for Dortmund
© Lars Baron/Getty Images
Bayer taking control
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.
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.
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.
The final game of Matchday 18 is under way. What will these two deliver this time?
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
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
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
Watch: Mainz 1-2 Dortmund
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.
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
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
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!