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.
The Germans scored in the 44th minute with their first big chance, Raphael Guerreiro prodding in after a quick passing move split open the Italian defence. Lazio's Ciro Immobile levelled with a 67th-minute penalty.
"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."
"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 on the injury front for Dortmund, already 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.