Alex Ferguson's men looked set to be joining leaders Arsenal, playing later in the day at Newcastle, on 56 points thanks to Ruud van Nistelrooy's 18th-minute strike.
But a neat chip from Shaun Wright-Phillips to his fellow sub set up Goater to bury a firm 87th-minute header into the top corner with his first touch of the ball at Old Trafford.
United had been heading for their seventh league win running after the Dutchman's goal which was the result of typically inventive United play and a trademark finish from Van Nistelrooy.
Captain Roy Keane threaded a through ball to Ryan Giggs on the City right and his pacey low cross was guided home at an angle for Van Nistelrooy's 12th league goal of the season and 63rd in 84 games for United.
United went close to making absolutely sure with two David Beckham second-half free kicks which both shaved the post and City keeper Carlo Nash did magnificently to block Giggs when he was set free 17 minutes from time.
In injury time, Goater, who scored twice against United in City's 3-1 win over them in November, found the net again but the goal was ruled out for an earlier infringement.