The Norwegian joined City from Dortmund in 2022 and has scored 111 goals in 126 games for the club since.
The striker’s previous deal, which reportedly included a release clause, had been due to expire in 2027.
Haaland’s new deal would see the striker remain with City until his 34th birthday should he stay at the club until its expiry in nine-and-a-half years’ time.
Haaland’s contract renewal comes two months after manager Pep Guardiola’s decision to sign a new two-year deal of his own.
The length of Haaland’s deal is the longest in the Premier League, eclipsing the nine-year deal Cole Palmer signed with Chelsea last August.
Since moving to the club from Germany, the Norway forward has won two Premier League titles, the FA Cup, the Champions League and the Super Cup.