The 27-year-old joined City from Everton five years ago and has gone on to win three Premier Leagues, two League Cups, and one FA Cup.
Stones started every match as England reached the Euro 2020 final, while at City he made 35 appearances in all competitions in 2020-21.
“I couldn’t be happier,” Stones said. “I love being part of this squad. There are so many quality players here and I know we can continue winning trophies, which is my main focus.
“Working with the manager [Pep Guardiola] is a dream – he has taught me so much about the game and I feel like I learn something new every single day
“The success we’ve had in the last four years has been incredible. To be a part of it has been a dream come true and I just want to continue winning.
“This is the best place for me to play my football and fulfil my ambitions.”
Stones joined City from Everton in 2016 for £47.5m.