Manchester City suffered their first loss in 10 matches in all competitions as Matty Cash's first-half strike secured a 1-0 victory for Aston Villa, the hosts' fourth straight win in the Premier League.
City's first loss since August left them six points behind leaders Arsenal after nine matches. Villa, unbeaten in their last six league games, are a point below City.
"We work a lot on set-pieces, over the last couple of years there have been a lot of set-pieces that have won us games and today is no different," Cash told the BBC after his second league goal of the season.
Haaland, who had scored in his last 12 matches for club and country, found the net near the 90th minute but it was ruled out due to an offside, as City failed to find an equaliser and succumbed to their third loss at Villa Park in a row.