Stoke, down to 10 men for most of the second half, never gave up and had their hosts rattled until the final minute of added time.
The ever-lively Johnson gave Sunderland the lead on 17 minutes, scuffing his shot at an angle as Asmir Begovic failed to hold a shot from Fabio Borini.
Both sides had made several changes to their starting line-ups after their weekend FA Cup fixtures, with former Sunderland captain Lee Cattermole a notable omission, apparently due to a “knock”.
Sunderland started much the brighter and deserved their lead, but Stoke battled back as the half drew to a close, with Mannone making some impressive saves, including a close-range reaction save from Ryan Shawcross’s diving header.
The visitors continued to press forward after the break, but their task was made more difficult when they were reduced to 10 men after 53 minutes, as Steven N’Zonzi picked up his second booking of the evening for an apparent touch on Jozy Altidore’s shoulder that saw the American fall to the ground.
A reshuffle saw new signing Peter Odemwingie pushed further forward, and his physical presence caused Sunderland some problems, but the hosts managed to cling on to their slender lead.
7' - CHANCE: Borini surges forward from the middle, and plays Larsson in, who shoots right at Begovic from 20 yards. The keeper doesn't manage to hold it first time but fortunately he and his defenders are alert.
17’ - GOAL! Begovic can't hold the shot from Borini, and Johnson sneaks in to scuff the shot in at an angle.
36' - PENALTY DENIED? Panic in the box - the Sunderland defence don't seem to know what's going on, and then Assaidi claims a handball against Bardsley. No dice, though - it's bounced up against his chest.
39' - SAVE! Great save from Mannone. Shawcross tries a diving header, and the keeper's reactions are swift.
53' - RED CARD! Steven N'Zonzi is off, for a second yellow card, fouling Jozy Altidore, who was racing through on goal. It looked a rather gentle touch on his shoulder, but also a needless one.
56' - MISS! Altidore has a golden chance, closing in on goal, but this is a man with a dreadful lack of confidence, and he strikes against Begovic's legs.
58' - SO CLOSE! Beautiful work from Borini, holding off the defenders, and playing in Adam Johnson on the right side of the box, but his shot slips wide of the far post.
74' - CHANCE: Odemwingie's done the hard part, racing in on goal, but then sidefoots it at Mannone.
83' - OFF THE BAR! A looping header from Shawcross strikes the top of the bar!
90'+4 - SAVE AT THE DEATH! Mannone makes a final decisive save, going through O'Shea to claim a cross.
Stoke have the worst away record in the Premier League this season with just five points from 12 games and a goal difference of -17.
There have been red cards in four of the last five Premier League meetings between Sunderland and Stoke.
Adam Johnson has scored five goals in his last three Premier League appearances.
Johnson has scored or assisted each of Sunderland’s last seven Premier League goals.
Did Altidore get N'Zonzi sent off? Steven N’Zonzi certainly appeared to touch Jozy Altidore, but was it with enough force to make him hit the floor? And did he need to do anything at all, bearing in mind he wasn’t even the final defender? This one will run and run.
MAN OF THE MATCH
Vito Mannone (Sunderland) - Produced a string of incredible saves to deny tireless 10-man Stoke a point.
Sunderland: Mannone 9, Bardsley 7, Alonso 7, Ki 7, Brown 7, O'Shea (C) 7, Johnson 8, Colback 7, Larsson 7, Altidore 7, Borini 7. Subs: Gardner 7, Fletcher 7, Celustka 7.
Stoke: Begovic 6, Cameron 6, Shawcross (C) 7, Wilson 6, Pieters 6, Odemwingie 7, Nzonzi 5, Adam 7, Whelan 6, Assaidi 7, Crouch 7. Subs: Arnautovic 8, Walters 7, Guidetti 7.
MATCH IN A TWEET