"He is our centre forward, that's what he's paid for, but he's ice cold," Dortmund captain Marco Reus said of Haaland's latest haul in front of 11,500 people - the biggest Bundesliga crowd since Covid-19 hit Germany in March.
"He will always score - no matter how well or badly he is playing."
Dortmund bounced back from last weekend's shock defeat at Augsburg as Haaland shone to leave him on 21 goals in 23 games for Dortmund since his January transfer.
"Not bad, it could have been more," said Haaland drily.
Having also scored in Wednesday's German Super Cup 3-2 defeat at Bayern Munich, the 20-year-old has netted five goals in as many games this season.
"There are already a few creatures like him, but he's a real beast in front of goal," said Freiburg captain Christian Guenter with grudging admiration.
"The first big chance he gets, goes in."
Dortmund were missing England winger Jadon Sancho and goalkeeper Roman Buerki, both recovering from illness having tested negative for the coronavirus.
Reus made his first start for eight months after injury.
US teenager Giovanni Reyna, who set up Dortmund's first three goals, was outstanding.
The 17-year-old attacking midfielder played Haaland into space for both of his goals and delivered a pin-point corner for Emre Can's headed goal.
Haaland, 19, once again showed dazzling finishing when he fired home from a right angle on 31 minutes.
Can then rose highest from a corner and his bullet header put Dortmund 2-0 up two minutes after the break.
Reyna and Haaland combined again when they got in behind the defence as the American delayed his pass which the Norway forward hammered into the net on 66 minutes.
Winger Felix Passlack claimed his first Bundesliga goal in added time to complete the rout with Haaland providing the final pass.
Leipzig go top
Defending champions Bayern Munich host Hertha Berlin on Sunday out to bounce back from last weekend's shock defeat at Hoffenheim which ended their 23-match winning streak.
Later, RB Leipzig went top of the league on goal difference with a 4-0 rout of bottom side Schalke, who are now 19 league games without a win.
Despite replacing head coach David Wagner with ex-Augsburg boss Manuel Baum in mid-week, Schalke's defensive woes continued.
Playmaker Emil Forsberg created Leipzig's first goal when his chip was knocked into the net by Schalke defender Can Bozdogan ater half an hour.
Schalke's misery continued as left-back Angelino and burly defender Willi Orban added goals to make it 3-0 at the break.
Germany defender Marcel Halstenberg then netted a penalty ten minutes from time to complete the rout.
Leipzig's win knocked Eintracht Frankfurt down to second on goal difference following their 2-1 victory over Hoffeheim.
Croatia striker Andrej Kramaric netted his eighth goal in four games with a superb strike, curled inside the far corner, to give Hoffenheim the lead on 18 minutes.
Kamada shines
However, Japan midfielder Daichi Kamada turned the game when he tapped home on 54 minutes, then powered through the defence before Bas Dost stabbed the ball over the line on 19 minutes from time.
Champions League side Moenchengladbach romped to a 3-1 win at Cologne as Alassane Plea and Stefan Lainer fired home before Lars Stindl added a penalty on 56 minutes.
Cologne scored a consolation goal when Elvis Rexhbecaj beat Gladbach keeper Yann Sommer from 20 metres out.
Bremen earned a second win in three games when Leonardo Bittencourt's right-footed shot on 27 minutes sealed their 1-0 win at home to new boys Arminia Bielefeld, who had a late goal disallowed.
Leverkusen were held to a 1-1 draw at Stuttgart as Patrik Schick's early goal was cancelled out by an equaliser by the hosts' striker Sasa Kalajdzic.
On Friday, Union Berlin enjoyed their first win of the season with a 4-0 thumping of Mainz at home as Germany striker Max Kruse scored his first goal for the hosts.
ryj/iwd