The visitors took the lead when Morten Thorsby was awarded a soft penalty by referee Anthony Taylor for some innocuous contact in the box by Emil Krafth. Haaland, who scored the winner against Serbia in their opening game, thumped the spot kick to the right of Robin Olsen in the 20th minute.
Sweden's only attempts on target in the opening 45 minutes came from a pair of Emil Forsberg free kicks just before the break, but despite a string of decent attacks and set pieces early in the second half, they couldn't manage to fashion an equaliser.
Haaland made them pay in the 69th minute, latching on to a loose ball and surging powerfully into the box before flashing a low right-foot shot across Olsen and into the net to make it 2-0.
Haaland missed a great chance to complete his hat-trick three minutes later and was replaced by Joshua King soon after.
Anthony Elanga scored a stoppage time goal for the Swedes that proved too little, too late as Norway held on to win.
The Norwegians top the group on six points ahead of their first home game against bottom side Slovenia on Thursday, while the Swedes host second-placed Serbia, who beat the Slovenians 4-1.