The 26-year-old United States international joined the club from Major League Soccer side Columbus Crew in the summer of 2019.
He was sent out on loan to Fortuna Dusseldorf in Germany for the 2019/2020 season and has served as back up to Ederson since returning from that temporary spell.
Steffen has made 16 appearances in total during his time at Manchester City and was part of the squad that won the Premier League and Carabao Cup last season.
"This is a fantastic moment for me - I am so happy to be committing my future to Manchester City," Steffen said.
"In my opinion, this is the best team in world football, with the best manager and best coaching setup. It's a privilege to be here and contribute to this team achieving its targets.
"I feel I learn every day and I have definitely improved as a goalkeeper since coming here. I contributed to our success last season, which was an amazing experience.
"I want to keep pushing Ederson every single day and take my chances when they arrive."
City's director of football Txiki Begiristain added: "Zack is an excellent goalkeeper and a brilliant professional who brings so much to Pep's squad.
"He fits the blueprint of what a Manchester City goalkeeper should be. Not only is he great with his hands, but he is also calm on the ball and provides outstanding distribution, which is a vital part of our style.
"This is a man who trains to an exceptionally high standard every single day. He always wants to learn and improve. Our coaching staff love having him here and we want to see him continue his development over the next years."