The Premier League title holders will send €28 million (£25.8/$31.4m) and the Brazilian defender to Juve for Cancelo, who moves to City after just one year in Turin.
Cancelo moves to City on a six-year deal that will keep him at the Etihad Stadium until the summer of 2025, becoming City's third signing of the summer after Spaniards Rodri and Angelino.
“City are a fantastic club, with a brilliant manager and I am delighted to be here,” Cancelo said in a press release.
“Everything about them has impressed me, from the facilities, to their style of play.
“I am always looking to develop my game and win trophies and I believe I can do that here, so now I’m really looking forward to the new season and testing myself in the Premier League.”
And there he is! 😍 pic.twitter.com/n9Ez13Rm7X— Manchester City (@ManCity) August 7, 2019
The total cost of Cancelo comes to €65m (£60m/$72.9m), with Juve acquiring Danilo at a value of €37m (£34.1/$41.5m).
“Joao is a fine player and an excellent attacking full-back who will provide us with a real threat on the right-hand side,” said City's director of football Txiki Begiristain.
“We have been impressed with his progress and have no doubt he can continue to shine here in Manchester.
“He fits the profile of player we want here at Manchester City. His best years are ahead of him, he’s technically proficient and has the physical attributes we desire.
“I am delighted we have secured his signature.”
As for Juventus, Danilo has signed a five-year deal with the club until 2024 as he departs City after a two-season stint with the club.
The full-back - who can play on either side of the defence - made a total of 21 appearances for City last season, but just 11 of those appearances came in the Premier League.