The holders attacked from the off and went close through American forward Gio Reyna, but had to wait until the 27th minute for captain Marco Reus to set up Haaland for his first.
The Norwegian dusted himself off after he was fouled by the goalkeeper to score Dortmund's second goal from the penalty spot in the 31st. He completed his hat trick early in the second half.
Dortmund were without the coronavirus-infected Julian Brandt and Thomas Meunier, while Mats Hummels, Raphaël Guerreiro and Emre Can were not yet fit enough to play. It was Dortmund's first competitive game with Marco Rose as coach and without Jadon Sancho, who switched to Manchester United in the offseason.
Goalkeeper Gregor Kobel made his first start.