The Norwegian netted a terrific treble and set up Julian Alvarez to bring up 50 top-flight goal involvements in record time, while Nathan Ake's controversial header also rendered Tim Ream's response meaningless.
While there was no Joao Palhinha for Fulham in the wake of his collapsed transfer to Bayern Munich, Jeremy Doku came in for his first start in sky blue - as Juanma Lillo manned the touchline again - while Phil Foden made his return to the starting lineup following an illness.
There was little for either side to write home about in the earliest exchanges, although Fulham lost Tom Cairney to injury in the 14th minute, as Luke Harris came on in the captain's place.
With the half-hour mark approaching, City belatedly sprang to life, as Mateo Kovacic slid an inch-perfect ball through to Haaland, and the Norwegian squared for his strike partner Alvarez to tap home from a few yards out.
Following a brief check for offside against Haaland, the goal was given, but the champions' lead lasted all of two minutes as the Cottagers unexpectedly struck back through another effective set-piece routine.
In a near carbon copy of the corner that led to Palhinha's equaliser at Arsenal last weekend, Andreas Pereira sent a delivery to the front post, where Raul Jimenez tried to pick out the bottom corner with a first-time strike.
Ederson was on hand to make the save, but he could only parry the ball into the path of Ream, who had kept himself onside and could not miss from less than a yard out.
However, with seconds remaining in the first half, it was the hosts' turn to demonstrate their set-piece prowess, as they restored their one-goal lead in the fifth minute of injury time thanks to a healthy dose of controversy.
Foden's corner to the penalty spot was met by an unmarked Ake, who had all the time in the world to direct a header into the bottom corner, although Manuel Akanji was in an offside position as he moved his leg out of the way of the ball.
Nevertheless, Ake's goal stood as Marco Silva gave the officials an earful heading into the break, and the Fulham manager's mood would not have improved much in the 58th minute of the match.
Returning the favour to Haaland from their first-half combination, Alvarez's pass took a deflection into the path of the Norwegian, who calmly finished into the bottom corner.
Fulham would soon fall foul to the officials again, but there could have been few complaints from Silva this time around, as Issa Diop clattered into Alvarez in the 67th minute, and Michael Oliver immediately pointed to the spot.
There would be no repeat of Haaland's fluffed attempt from last weekend's success against Sheffield United, as he emphatically crashed home into the side of the net to double his tally for the afternoon.
The 23-year-old's second of the day saw him reach 50 Premier League goal involvements in a record-breaking 39 games - breaking Andy Cole's previous record of 43 - and he added yet another match ball to his collection in the fifth minute of injury time, firing home a low effort into the bottom corner from Sergio Gomez's cut-back.
Following a recent back operation, Pep Guardiola will be expected to return for City's first match after the international break - which comes away to West Ham United on September 16 - while Fulham seek to snap a three-game winless run in the top flight at home to Luton Town in two weeks time.