Leverkusen s Victor Boniface, left, and Dortmund s Mats Hummels challenge for the ball during the German Bundesliga soccer match between Bayer Leverkusen and Borussia Dortmund at the BayArena in Leverkusen, Germany, Sunday, Dec. 3, 2023. AP
Leverkusen and coach Xabi Alonso looked on course to lose for the first time since May after Julian Ryerson's early goal for Dortmund.
That all changed in the 79th minute when Patrik Schick, seconds after coming off the bench, found space to receive a pass from Odilon Kossounou in the penalty area and cross low for Boniface to score.
It was Boniface's 13th goal of the season in all competitions but his first in the Bundesliga for nearly two months.
Niclas Füllkrug tried a diving header to win the game for Dortmund deep into stoppage time but sent the ball over the bar.
On a freezing and snowy evening, Dortmund defended for most of the game after full back Ryerson scored in the fifth minute. It was the first time Leverkusen had conceded the opening goal since Harry Kane scored for Bayern Munich in a 2-2 draw in September — the only other time Alonso's team dropped points this season. Leverkusen had won all 14 of its games in all competitions since then.
Leverkusen celebrated leveling the score when Florian Wirtz lashed a shot in off the crossbar just before halftime, but a video review found a tight offside — Boniface's heel — much earlier in the move.
Leverkusen kept Dortmund under pressure for almost all of the game but its attacking moves frequently broke drown thanks to either poor crossing or wayward long-range shots hit out of apparent frustration.
Leverkusen stays top of the Bundesliga by three points from Bayern Munich, but Bayern has an extra game to play after a postponement Saturday. Dortmund is fifth and has just five points from its last five Bundesliga games — a stark contrast to Edin Terzic's team's table-topping form in its Champions League group.
Also Sunday, Michael Gregoritsch's goal ensured a 1-0 win for Freiburg against relegation-threatened Mainz. Freiburg climbed to eighth and Mainz is 17th in the 18-team division after a first loss for new coach Jan Siewert in his fourth game since replacing Bo Svensson.
Augsburg hosted Eintracht Frankfurt in Sunday's late game, a day after nearby Bayern had to call off its game against Union Berlin because of heavy snowfall.
Augsburg fans stepped in Saturday to join club staff in shoveling snow off the stands to get the stadium ready for the game.
(For more sports news and updates, follow Ahram Online Sports on Twitter at @AO_Sports and on Facebook at AhramOnlineSports.)