This victory brought City's total points to 61 after 27 games, placing them two points behind leaders Arsenal (who play Fulham on Sunday) and 12 points ahead of third-placed Manchester United.
Although City had a promising start with Rodri's third-minute volley and Jack Grealish's near-miss, Palace's strong defense made it difficult for City to make progress.
Haaland's frustration showed when he narrowly missed a shot and the subsequent rebound.
In the second half, City had an excellent opportunity with a free kick from Phil Foden, but Guaita's impressive save prevented them from scoring.
City's substitute Julian Alvarez also missed a chance to score, firing the ball over the bar.
City managed to break through in the 78th minute when Michael Olise's clumsy late challenge on Ilkay Gundogan resulted in a penalty for City.
Haaland stepped up to score his 28th league goal of the season and his 34th in all competitions, securing City's win.
Haaland, who has faced tougher challenges from opposing teams this season, expressed his enjoyment of playing in England's competitive football scene.
After a frustrating evening, Haaland celebrated with the travelling fans, and he emphasized that the team must adapt to different tactics and perform their best. Palace failed to register a shot on target for the third consecutive Premier League game.