It was comfortable for the reigning Premier League champions as Pep Guardiola's puffer jacket with David De Gea making brilliant saves to keep out Gabriel Jesus's goalbound strike, an effort from Kevin De Bruyne and two shots from Cancelo.
Eric Bailly of Manchester United scores an own goal during the Premier League match between Manchester United and Manchester City at Old Trafford
Image credit: Getty Images
City's possession was rewarded on the stroke of half-time when Bernardo Silva converted Cancelo's cross from a tight angle after Harry Maguire and Luke Shaw inexplicably switched off.
United's only chance of note in the first period was a Cristiano Ronaldo volley which was saved by Ederson.
Solskjaer put on Jadon Sancho for Bailly at the break, switched to a back four and leter brought on Marcus Rashford and Donny Van De Beek.
It resulted in them having more of the ball but still creating little with Bruno Fernandes anonymous and the game resembling a training match at times.
Phil Foden hit the post in the closing stages as City held on comfortably to take the spoils in the 186th derby to move up to second in the table while United stay fifth.
TALKING POINT - A tactical mismatch with echoes of United's hammering by Liverpool
This game barely resembled a contest as Ole got his tactics all wrong again.
Defensively United look a shambles without Varane. Harry Maguire, Aaron Wan-Bissaka and Luke Shaw's form must be a concern.
The hosts played to City's strengths, allowing them space and time with some disjointed pressing. Teams have worked out how to counter the McFred partnership.
And in the final third, they barely laid a glove on their opponents despite making substitutions.
It is four defeats in six games now for United. Beating City was Ole's get out of jail card in the past 2 seasons, it isn't any more, his side lok further than ever to being title challengers.
’We play our game while Man Utd wait behind’ - Guardiola
MAN OF THE MATCH - João Cancelo (Man City)
His passing and crossing were impeccable. Helped by United's inability to press as a unit, he made the use of the space he was given to set up Silva's goal and carve open United's defence with ease throughout.
MAN UTD: De Gea 8, Lindelof 6, Maguire 4, Bailly 3, Wan-Bissaka 3, McTominay 5, Fred 4, Shaw 4, Fernandes 4, Greenwood 6, Ronaldo 6. Subs: Sancho 5, Rashford 5, Telles n/a, Van De Beek n/a.
MAN CITY: Ederson 5, Walker 6, Dias 5, Stones 5, Cancelo 8, Rodri 7, Gundogan 7, Foden 8, De Bruyne 6, Silva 8, Jesus 6.
7' - OWN GOAL! Seconds after Gundogan missed a sitter, Cancelo's cross is diverted into his own net by Bailly. Another mistake to add to his one against Atalanta.
30' - FANTASTIC SAVE! From Foden's cross, De Gea pushes Jesus's shot on the turn over the bar. Amazing save. From the corner, it falls to Cancelo 25 yards out who gets a hand on his shot to push it over.
34' - GOOD SAVE! De Gea to the rescue again, keeping out De Bruyne's shot with his fingertips.
45' - GOAL FOR CITY! Deserved goal. Lovely passing move ends with Silva poking it in at the near post from Cancelo's tantalising cross.
82' - WOODWORK! De Bruyne finds Foden who lashes a shot against the outside of the post.
Manchester United are now without a clean sheet in their last 14 home games in all competitions - they have e only had one longer run in their entire history without a home clean sheet, a 21-game run between April 1958 and March 1959.