The 22-year-old, who becomes the world's second most expensive defender, is the eighth player to join the club since Pep Guardiola's appointment as manager.
The announcement comes after the transfer was leaked on Uefa's official website, which published a City squad list including Stones while he was still officially an Everton player on Tuesday morning.
City were required to submit a squad for their upcoming Champions League qualification play-off against Steaua Bucharest by midnight on Monday.
According to European football's governing body, City's submitted list included Stones and, "as is standard procedure", was automatically published online.
City claim an agreement was in place to announce the transfer with Everton at 11am, yet Uefa published the squad list earlier than expected.
One City source, speaking to Sky Sports News, reportedly described the leak as a "huge embarrassment".
Stones, who is expected to wear the number 24 shirt at City, said of the move: "I'm absolutely delighted to sign for City and now the deal's done I'm looking forward to the next stage in my career.
"I've obviously seen what's going on here at the Etihad, it's an ambitious club with a great manager so I can't wait to get stuck in and help achieve the goals.
"I know it will be tough getting a place in this team but I'm determined to become the best player I can be and help us to success.
"I had a wonderful time with Everton and wish them and their fans all the best but now I'll give my all for City."
Stones has become known for his adventurous, ball-playing defending, which is expected to suit Guardiola's possession-based style.
The former Barcelona and Bayern Munich head coach told City's official website: “We want to help John show his quality with us and improve on what he has already achieved.
"I like the way he plays the game and I'm looking forward to welcoming him into the squad."
Stones joins fellow new recruits Ilkay Gundogan, Nolito, Aleksandar Zinchenko, Aaron Mooy, Leroy Sane, Gabriel Jesus and Marlos Moreno at the Etihad.
City's technical director Txiki Begiristain, who has overseen the squad overhaul this summer, said: “John is an excellent defender and we are all really pleased he is joining us.
“We have worked hard to bring him to City, and we feel we are signing one of the best young central defenders in Europe."
Stones, who has won 10 international caps with England since making his debut in 2014, becomes the most expensive English defender of all time.
The deal surpasses Rio Ferdinand's £36.1m move from Leeds United to Manchester United in 2002.
Join our new commenting forum
Join thought-provoking conversations, follow other Independent readers and see their replies