The England winger, who was considered surplus to requirements at the Etihad Stadium during the summer and was allowed to join the Black Cats in a £10million move, embarrassed former team-mate Joe Hart with a dipping 53rd-minute strike which beat him at the near post and clinched three precious points for his new employers.
However, the winner was not without controversy with the visitors adamant they should have been awarded a free-kick for a foul on Pablo Zabaleta during the build-up.
City might have been ahead with just eight minutes gone, but Vincent Kompany's header came back off the crossbar and Yaya Toure's goalbound follow-up was hacked away by Simon Mignolet, who reacted instantly to deny the visitors an early lead.
But seconds later Hart had to dive to his right to turn away Steven Fletcher's rasping left-foot drive and the Black Cats, buoyed after weathering the early storm, started to force their way into the game.
Kompany and Matija Nastasic had to repel dangerous crosses from Sebastian Larsson and James McClean respectively, and Stephane Sessegnon flashed a header well wide from Craig Gardner's driven 42nd-minute cross.
The Black Cats took the lead with eight minutes of the half played. City boss Roberto Mancini and Pablo Zabaleta were left appealing in vain for a free-kick for Gardner's challenge on the full-back, but Johnson picked up possession and cut inside before blasting in a dipping shot which caught Hart flat-footed at his near post and squirmed into the bottom corner.
Sessegnon might have doubled his side's advantage within two minutes, but pulled his effort across the face of goal with City in disarray.
Mignolet excelled himself once again two minutes later to deny Aguero one on one, but it was Hart in the firing line with 10 minutes remaining when Sessegnon was played in by substitute Fraizer Campbell with the keeper coming out on top.