Manchester United moved 2nd in the Premiership after Ronadldo struck 5 minutes after half time to give them the lead.
United lost keeper Edwin van der Sar through injury at half-time and had to survive a spirited Birmingham display.
Van der Sar saved well from Cameron Jerome and Rio Ferdinand cleared off the line from Gary McSheffrey.
Ronaldo grabbed the winner when he took advantage of Franck Queudrue’s error to round Maik Taylor and score.
It was Ronaldo’s 100th Premier League start, and the display summed up United’s season so far – failing to scale the heights but grinding out the victory.