Pep Guardiola's men dominated the first 45 minutes, but could not find the net, as Vicente Guaita saved well early on from Rodrigo's strike and Haaland swept over the bar from Nathan Ake's cross.
We kept up the attacking intensity after the interval, with Phil Foden next to come close, but his powerful free-kick was parried to safety by Guaita.
The hosts defended with determination, but with 15 minutes remaining, a quick corner caught them out and winger Michael Olise fouled Ilkay Gundogan inside the box.
The referee pointed to the spot and Haaland stepped up to calmly slot into the corner, sending Guaita the wrong way to claim his 28th Premier League goal of the season.
The striker had a golden chance to double the lead shortly after, but his header from Jack Grealish's cross looped over the crossbar.
CITY+ | SIGN UP TO ACCESS EXCLUSIVE CONTENT
We remained professional and defensively solid to secure all three points and move back to within two points of league-leaders Arsenal, who play on Sunday.
View the best snaps from the victory via our gallery below!