Kenwyne Jones headed Sunderland in front after eight minutes when he looped Steed Malbranque's cross over Shay Given.
City were thwarted by five superb second-half saves from Craig Gordon as hard-working Sunderland held on.
But substitute Johnson's sublime curled finish earned a point for City.
SUNDERLAND (AFP) - Manchester City rescued a 1-1 draw at Sunderland as Adam Johnson came off the bench to score a stoppage-time equaliser against his home-town club on Sunday.
Roberto Mancini's side had trailed to Kenwyne Jones' early goal for the hosts, but Sunderland-born Johnson produced a superb strike in the final moments to keep alive City's challenge for a place in the Champions League.
City could have drawn level with fourth-placed Tottenham with a victory but they will be happy enough to remain in fifth - two points off the final Champions League spot - after such a narrow escape.
After ending their 14-match winless run by thrashing Bolton 4-0 in midweek, it was no surprise that Sunderland started in confident mood.
Darren Bent had done the damage in that match with a hat-trick but it was his strike-partner Jones who caused the City defence more problems early on.
Jones made a powerful run from deep that cut through the visitors' back-four but ended with a tame shot straight at Shay Given.
The Trinidad and Tobago international made no mistake in the ninth minute as Steed Malbranque curled a cross toward Jones and he directed a bullet header past Given for his first goal in five matches.
In the 15 days since City beat Chelsea 4-2 in their last match, they seemed to have lost some momentum. They struggled to mount a coherent response to the blow and Given was called into action twice in quick succession to keep out efforts from David Meyler and then Jones.
Fraizer Campbell, who notched his first league goal for Sunderland in midweek, also went close as he smashed a fierce striker across the face of goal.
Mancini's team nearly equalised against the run of play when Wright-Phillips and Carlos Tevez set up Gareth Barry and the England midfielder's effort went inches wide of goal.
With City clearly struggling, Mancini took off defender Wayne Bridge and sent on Paraguay striker Roque Santa Cruz before half-time.
City had won the last nine meetings between the sides and Mancini's half-time team-talk seemed to have the desired effect as the visitors finally began to take control.
Losing Jones to injury at half-time unsettled City and home goalkeeper Craig Gordon had to rush from his line to block Santa Cruz's close-range effort before making another smart stop to keep out Wright-Phillips' strike moments later.
Craig Bellamy kept the pressure on as the City striker surged into the area and hit a goal-bound effort that Gordon clawed away at the near post.
Mancini sent on midfielders Patrick Vieira and Johnson, who turned down a move to Sunderland in favour of joining City in January, and the visitors completely dominated the closing stages.
Gordon came to the rescue when Bellamy drilled in a cross and Tevez's close-range shot seemed destined for the back of the net until the Scot blocked it with a leg.
Bellamy was denied twice by Gordon in the last 10 minutes but City's pressure told at last in the first minute of stoppage time.
Johnson took possession on the right edge of the Sunderland penalty area and curled a perfectly-placed shot over Jordan Henderson at the far post and into the roof of the net.