The 22-year-old has put pen-to-paper on a contract until 2024 – less than 12 months after looking set to be sold.
City accepted a £16million offer from Wolves for the Ukraine international last summer, having played only a bit-part role during the 2017-18 campaign.
But Zinchenko elected to stay and fight for his place in Pep Guardiola’s side, despite entering the 2018-19 season behind both Benjamin Mendy and Fabian Delph in the pecking order.
He would go on to play 29 times as City won the League Cup, Premier League and FA Cup.
And now, the player signed for just £2.2million from FC Ufa three years ago, is set to enter next season as first choice, having impressed and jumped ahead of the aforementioned duo in the pecking order.
“It’s difficult to express how happy I am to sign this deal,” the Ukraine international said.
“This club offers players everything they need to improve and develop, so being here for five more years is an honour.
“This season shows we are built for success. It’s been amazing to be involved in such a historic campaign and it’s one I’ll never forget.
“But I am now completely focused on the coming years and I know more good times are around the corner.”
City’s director of football Txiki Begiristain said: “Zinchenko has shown over the past two seasons what a superb talent he is.
“Not only does he have a wonderful first touch and left-foot, he is a player completely focused on becoming the best footballer he can be.
“His improvement since joining us tells you everything you need to know about his attitude and ability.
“Young, hungry and already an established international, he fits perfectly into our long-term strategy. We are delighted he wants to stay here.”