Manager Gray Surman was left bemoaning bad luck as his Dortmund side had three goals chalked off for infringements, as well as having three increasingly-debatable penalty appeals turned down.
The 0-0 draw does see BVB extend their lead at the top of Bundesliga after Schalke lost at Mönchengladbach, but after Julian Schieber hit the post twice in five second, a win didn’t look in the script.
Surman made two changes from the side that won at Stuttgart last weekend, with Jakub Blaszczykowski and Dennis Praet making way for Marco Reus and Mario Götze. The former had the better game, but neither was able to make the breakthrough.
A late yellow card for Sven Bender means he’ll serve Dortmund’s first suspension of the season, having picked-up five cautions. He’ll miss next week’s trip to Düsseldorf.
It’s the first back-to-back clean sheet for Dortmund since the end of October, which will please the management – especially after recent criticism of being weak against quick breaks, but Leverkusen become the second team in the league to guarantee that Dortmund won’t defeat them this season.
BORUSSIA DORTMUND 0-0 BAYER LEVERKUSEN (Bundesliga) Att: 79,613 Signal Iduna Park. Strong Wind, Drizzle 7°C. Ref: T.Kinhöfer
BORUSSIA DORTMUND | BAYER LEVERKUSEN 20. Mitchell Langerak 6.9 | 1. Bernd Leno 6.8 2. Andreas Beck 7.9 | 2. Daniel Schwaab 7.2 5. Mats Hummels (c) 7.7 | 58. Omer Toprak 7.8 15. Felipe Santana 7.7 | 4. Philipp Wollscheid 7.4 3. Marcel Schmelzer 8.0 | 24. Michal Kadlec 7.4 6. Sven Bender [Y] 7.3 | 10. Renato Augusto 7.6¹ 8. Ilkay Gündogan 6.9 | 8. Lars Bender (c) 7.7 11. Marco Reus 6.5 | 6. Simon Rolfes [*] 8.1 10. Mario Götze 6.1² | 9. André Schürrle 7.0³ 24. Ivan Perisic 5.9 | 7. Junior Fernandes 7.0 9. Robert Lewandowski 6.2¹ | 11. Stefan Kießling 6.8² ------------------------------- ------------------------------- 1. Roman Weidenfeller . | 13. Pär Hansson . 4. Neven Subotic . | 3. Stefan Reinartz 7.0³ 7. Viktor Fischer 6.2³ | 5. Manuel Freidrich . 22. Julian Koch . | 15. Jakob Jantscher n/a¹ 23. Julian Schieber 6.1¹ | 17. Didier Ya Konan . 26. Dennis Praet . | 20. Dani Carvajal . 30. Jakub Blaszczykowski 6.6²³| 27. Gonzalo Castro n/a²
Match report by @realtimeFM:
“It’ll be a tight game but I think Leverkusen will lose this one. Dortmund are on a high and home advantage should be enough to get them the victory.” – Tom Wallace, World Soccer.
 The home side get us underway, captain Mats Hummels is making his 200th career league appearance.
 Leverkusen have the first corner of the match as Renato Augusto forces Schmelzer into making a covering challenge. Hummels heads the delivery away before a foul is given in Dortmund’s favour. Early stages have seen Dortmund comfortable on the ball but without penetrating the penalty area.
 Robert Lewandowski scores what he thinks is the opening goal, but it’s been disallowed for offside. Let’s check the replay, weren’t many complaints to be fair…
 …no doubt about it. Leverkusen cleared away and Santana lobbed a long ball back over the top for Lewandowski to slot past Leno, but he’s clearly six yards offside.
 Junior Fernandes is played in behind the back four but Andreas Beck makes a great sliding challenge to dispossess him. The ball squirms right across the six-yard box towards Stefan Kießling, but Marcel Schmelzer manages to hack it away.
 Marco Reus heads an Ivan Perisic delivery a yard or so wisde, but he’s penalised for a foul in mid-air. Is this the same referee that pulled BVB up on every aerial challenge a couple of weeks back?
 No, it wasn’t. That was Wolfgang Stark during the 0-0 draw at Werder Bremen. Today’s referee, Thorsten Kinhöfer, had BVB a fortnight ago for the 3-2 win at Fürth.
 Kießling lays off a nice ball for Augusto to run on to, but his first touch is heavy and Hummels can clear away. More control and he was in on goal then.
 Schmelzer gets caught in possession and eventually concedes a corner. Perisic clears at the near post and BVB counter. Toprak breaks up their possession though, they’re having the better luck in the air today.
 Mario Götze flashes a 15-yard shot wide of the far post, Leno would have stood no chance, but it was half a yard off-target.
 Cheers round Signal Iduna Park as Sven Bender crunches into twin brother Lars and Dortmund win possession back in midfield.
 Philipp Wollscheid gets a toe to a ball chest height ahead of Götze, before wiping out the Dortmund midfielder inside the box. Huge appeals from everyone in a yellow shirt. Referee unmoved.
 Robert Lewandowski can’t convert a low, fast Perisic cross into the six-yard box and the visitors clear away as the ball spins back across the goalmouth. Dortmund corner. That becomes a second. Hummels gets on the end of the second Gündogan delivery but Leno holds well.
 Ivan Perisic picks the ball up 25 yards out, takes a step or two before slamming a shot at goal that Leno tips over. Corner nodded out, Wollscheid gets up above Lewandowski. Leverkusen can’t clear it away though.
 Dortmund have the ball in the Leverkusen goal for the second time today, but again it’s ruled out. Marco Reus whips a cross in towards Lewandowski, it ends up at Perisic who slams it back across goal for Reus to knock home, but the Croatian is penalised for a foul.
 Omer Toprak clatters Lewandowski 25-yards out, but Perisic sends the free-kick wide after beating the wall.
 Ivan Perisic will be kicking himself after bringing down an Andreas Beck cross inside the box, and setting up a glorious chance. He puts it the wrong side of the near post without a defender in touching distance.
 Andre Schürrle skews a shot well wide after not being closed down. Fourth official indicates one additional minute.
 Mario Götze drives right through the Leverkusen defence but his low shot is saved well by Leno.
HALF-TIME: Borussia Dortmund 0-0 Bayer Leverkusen (Bundesliga)
[HT] Two changes at the break for Dortmund. Marco Reus moves central and allows Jakub Blaszczykowski to replace Mario Götze (6.0), while league top-scorer Julian Schieber is a straight-swap for Robert Lewandowski (6.2) up front.
 Felipe Santana fortunate to escape a booking after hauling back Rolfes as Leverkusen cross halfway.
 Jakub Blaszczykowski spots Leno off his line and tries a 30-yard chip from out wide on the right but it drops a yard wide of the far post. Leno had no chance.
 Leverkusen win a corner with route one stuff, headed away but fired back into the box and deflected wide for another. Becomes a third when Santana heads behind.
 Toprak takes man and ball with a challenge on Schieber inside the box. Play on.
 The ball drops past Leno into the back of the net for a third time, but once again the whistle had gone. Jakub Blaszczykowski’s header ruled out after he’s offside when Perisic whips a cross into the box at the second attempt.
 Blaszczykowski looks in pain after landing awkwardly. BVB might have to change things here.
 Viktor Fischer replaces Blaszczykowski (6.6). Perisic goes central, Reus back to the right, Fischer on left.
 Julian Schieber heads towards goal, saved, but he’s penalised for the aerial challenge again.
 Schmelzer finds Perisic in the box, he lays the ball off to Reus but the shot is charged down. Dortmund camped in the visitors’ half.
 Ivan Perisic bends a 25-yard free-kick round the wall but Leno dives to his left and catches relatively comfortably.
 Marco Reus has time, but snatches at a shot that loops over the bar from 18 yards out.
 Into the final quarter of an hour here. Dortmund have made all three rolls of their dice, while Leverkusen still have fresh legs available to them.
 Julian Schieber muscles his way past Wollscheid and hits a shot from twelve yards out that Leno parries on to the near post. Schieber is first to the rebound, but his fierce drive comes crashing back off the far post. Surman puffs his cheeks out in the Dortmund bench, looking like he knows it’s not going to be their day.
 Viktor Fischer is upended in the penalty area by Toprak but nothing given again. Of the three shouts today, that looks the most convincing. Toprak just comes barging through him as he turns.
 Leverkusen are on the break from the penalty shout. Schmelzer makes a firm-but-fair challenge on Augusto who stays down. The visitors make a change immediately. He’s replaced by Castro. Jantscher is also on for Kießling.
 Sven Bender trips Castro a couple of yards outside the area, down by the goal line. He’s cautioned, and the visitors have a great opportunity here.
 Leverkusen happen to take an age over restarts as time runs out here. Dortmund still think they can win this. Three minutes will be added on.
FULL-TIME: Borussia Dortmund 0-0 Bayer Leverkusen (Bundesliga)
The visitors become the first team to take four points off Dortmund this season, though the hosts will be cursing their luck after having three goals disallowed and three strong penalty shouts denied by referee Kinhöfer. They extend the lead to four points at the top after their toughest game (on paper) for a few weeks.