Manchester United survived Gary Neville's red card to cruise to victory in the FA Cup fifth-round derby against Manchester City.
Neville was dismissed for head-butting Steve McManaman after Paul Scholes put United ahead on 34 minutes.
United keeper Tim Howard denied Joey Barton before United ran riot.
Ronaldo's goal was sandwiched by two close-range strikes from Ruud van Nistelrooy, with Michael Tarnat and Robbie Fowler on target for City.
Kevin Keegan's side had their chances, but their dismal record of 30 years without a win at Old Trafford never looked like coming to an end.
City restored Icelandic goalkeeper Arni Arason in place of the cup-tied David James, while United had captain Roy Keane back in midfield.
Neville sees red for headbutting Steve McManaman
And United dominated a first half that was played out in a low-key fashion until Neville's sending-off.
Arason, a hero in the dramatic fourth-round win at Spurs, was City's saviour after 21 minutes when he saved well from Keane after he was played in by Van Nistelrooy.
It was only a temporary reprieve for City as United took a deserved lead 12 minutes before the interval.
Ryan Giggs provided a perfect low cross into the six-yard area which left Claudio Reyna in two minds, allowing the predatory Scholes to steal in and crown his 400th appearance for United with a simple goal.
The game exploded into life on 38 minutes when Neville was rightly shown the red card.
34 mins: Scholes puts Man Utd in front
38 mins: Gary Neville is sent off for butting McManaman
70 mins: Van Nistelrooy extends Man Utd's lead
72 mins: Ronaldo adds Man Utd's third
77 mins: Tarnat pulls a goal back for Man City
79 mins: Van NIstelrooy strikes again for Man Utd
86 mins: Fowler is on target for City
Neville was guilty of diving as he was challenged in the area by Tarnat, and when he was confronted by a furious McManaman he clearly stuck his head into his former England colleague's face.
It sparked a melee between players of both sides, which ended with Neville's dismissal.
City upped the tempo at the start of the second half in a bid to make their numerical advantage pay.
And it needed three saves from United goalkeeper Howard to preserve United's lead.
He saved well from Shaun Wright-Phillips, then brilliantly from Barton at point-blank range.
The turning point came after 64 minutes when McManaman tamely tapped a simple chance at Howard - exposing City to ruthless punishment from United.
Ronaldo's cross was turned in at the far post by Van Nistelrooy six minutes later.
And the contest was over after 72 minutes when Ronaldo scored from close range after Arason had saved miraculously from Giggs.
Tarnat scored at the far post to give City hope, but it was quickly snuffed out as Van Nistelrooy latched on to Keane's header to score from virtually on the goalline.
Fowler's quick free-kick gave United an anxious moment, but ultimately it was a comfortable victory for United.
Man Utd: Howard, Gary Neville, O'Shea, Silvestre, Fortune, Ronaldo, Phil Neville (Brown 90), Keane, Giggs (Butt 88), Scholes, van Nistelrooy.
Subs not used: Carroll, Forlan, Fletcher.
Sent Off: Gary Neville (39).
Booked: Gary Neville.
Man City: Arason, Van Buyten, Dunne, Distin, Tarnat, Wright-Phillips, McManaman, Reyna, Barton, Sibierski, Fowler.
Subs not used: Stuhr-Ellegaard, Wiekens, Macken, Bosvelt, Elliott.
Booked: Tarnat, Barton.
Referee: J Winter (Cleveland).