Wolves will receive a 10% sell-on clause from any future profits made by City on the 25-year-old.
The Portuguese international, who has 11 caps for his country, has signed a five-year deal with City.
“I’m so happy to be joining Manchester City, the champions of Europe and a club I’ve admired for a long time,” said Nunes.
“The opportunity to work under [City manager] Pep Guardiola, one of the greatest managers ever, and alongside some of the best players in the world was something I simply couldn’t turn down.
“I learned so much during my season at Wolves and I’m excited to continue improving in the Premier League, a division which brings the best out of me. I’m really excited to get going, meet the fans and hopefully be a part of plenty more success at City.”
‘It wasn’t necessary the stance Matheus took’
City had a previous proposal for Nunes rejected, with Wolves holding out for a figure closer to their asking price of more than £60 million.
Nunes has lately missed training at Molineux after expressing his desire to join Guardiola’s side.
“I was disappointed with how it ended, it wasn’t necessary the stance Matheus took, but we ended with a good resolution for everyone,” said Wolves sporting director Matt Hobbs.
“Matheus is a hugely talented player who would admit that last season he didn’t hit the heights he expected, but it was a tough season for the team, so maybe he wasn’t allowed to do that.”
Last summer, Wolves signed Nunes on a five-year contract, paying a club record £38 million to Sporting Lisbon.
He was an important player in Wolves’ second half of last season, when they escaped relegation by finishing 13th in the table.