The Germans secured a top-two finish ahead of their final game at Zenit St Petersburg, but Lazio need at least a draw against Club Brugge next week to advance.
The 20-year-old Haaland, who has scored 16 goals in 12 Champions League appearances, was surprisingly not in Dortmund’s starting lineup and his coach Lucien Favre said a muscle injury would sideline the Norwegian until January.
It was Lazio who had the better chances in the first half but the hosts, who clearly missed Haaland’s scoring instinct, struck against the run of play a minute before the break.
- READ MORE
- Haaland, Sancho lead Dortmund to 3-1 win at Leipzig
- CAF Champions League: Raja Casablanca of Morocco stunned, Chiefs celebrate, Enyimba fall
- Mayoral double as Roma hot streak continues, Atalanta and Lazio win
- CR Belouizdad knocks Gor Mahia out of CAF Champions League
- Why Giroud can't just stop scoring goals
- Caf Champions League: CR Belouizdad of Algeria crush Gor Mahia 6-0
“We lost 3-1 in Rome, we improved tonight and could have won it with our chances,” Favre said. “In the end it was not our best performance, but we have qualified. That is what was important tonight. Nothing else matters.”
The Germans scored with their first real chance, Raphael Guerreiro prodding in after a quick passing move split open the Italian defence.
Lazio captain Ciro Immobile, playing against his former club, levelled with a 67th-minute penalty and the Italians then forced Dortmund keeper Roman Buerki to make two outstanding saves to send his team through.
Buerki palmed Immobile’s powerful low drive wide in the 87th and he pushed Andreas Pereira’s free kick deep in stoppage time over the bar.
“We did well to react, did well to not lose and we had a great final 20 minutes in which we did all we could do win it and get the three points,” Immobile said.
“We wouldn’t have deserved to lose, for what we showed in the second half. We showed great character and winning mentality.”
There was more bad news for Dortmund, already the missing injured Emre Can and Thomas Meunier, with centre back Mats Hummels helped off the pitch late in the game due to an ankle injury.
Dortmund are on 10 points with second-placed Lazio on nine. Club Brugge are third on seven after beating last-placed Zenit.