The Norway striker struck twice in the first half and added a third late on to take his tally to seven goals in three games and maintain City’s 100% start to the campaign.
Haaland slid in a 10th-minute opener after receiving a pass from Bernardo Silva, but West Ham drew level when Ruben Dias turned Jarrod Bowen’s cross into his own net.