Sunderland moved out of the Premier League bottom three for the first time since August with a narrow win over 10-man Stoke.

Adam Johnson tapped home from close range after 17 minutes when Stoke goalkeeper Asmir Begovic spilled a Sebastian Larsson shot.

Steven N'Zonzi was sent off for a second bookable offence eight minutes into the second half.

Stoke fought back with Ryan Shawcross hitting the bar, but the hosts held on.

Johnson's hot streak

Adam Johnson

Adam Johnson has scored or provided an assist in Sunderland's last seven goals

The result saw Sunderland move above West Ham and Fulham and to within a point of Mark Hughes' side, although the Stoke manager may take some comfort from the way his players rallied after N'Zonzi's dismissal.

Ultimately, the Potters paid for their slow start as they allowed the hosts - buoyed by their recent Capital One Cup semi-final success over Manchester United - to dictate terms.

Sunderland's early fluency belied their position in the table, and they were good value for the lead after Johnson seized on Begovic's mistake to score from a tight angle.

But Sunderland's bright start petered out as Stoke gradually imposed themselves, and the home side were grateful for keeper Vito Mannone ensuring they were still ahead at half-time.

The red mist descends again

With Steven N'Zonzi's dismissal there have now been four red cards in the last five Premier League meetings between these two sides.

The Italian recovered after spilling the ball in a collision with captain John O'Shea to block Peter Crouch twice in a matter of seconds, then stopped a diving header from Shawcross.

Stoke continued to impress after the break until N'Zonzi received a second yellow card from referee Robert Madley after the midfielder pulled back Jozy Altidore just outside the area.

Sunderland immediately began to make their numerical advantage count, Altidore drawing a fine save with his feet from Begovic.

Johnson came close to adding a second when he rolled a shot across the goal and just wide of the far post, while Begovic pushed a long-range effort from Larsson wide.

Victory gives Sunderland hope - Oatway

However, Stoke increased the pressure on Sunderland and debutant Peter Odemwingie, who signed from Cardiff this week, wasted a chance when he shot straight at Mannone.

Shawcross came the closest to equalising after a sustained spell of pressure from the away side, hitting the bar with a looping header in the closing minutes.

Although Sunderland's Wes Brown flashed a header wide late on, Stoke's late dominance was such that Black Cats manager Gus Poyet looked relieved at the final whistle.

Sunderland coach Charlie Oatway:

"We were under no illusions that they would have spells where they would put us under pressure, but we held out for the majority of it. We knew they would throw everything at us, and men had to be men.

"We played a little bit into their hands - we did not look after the ball as well as we did in the first 25 minutes - but there was so much pressure for us to get out of the relegation zone that we desperate to hold out.

"Thankfully we got the points and hopefully long may it continue that we keep to pick up more points."

Beaten Stoke were magnificent - Hughes

Stoke manager Mark Hughes:

"I thought the lads were absolutely magnificent today. Sunderland had 10 to 15 minutes in the first half when we conceded and they had a lot of possession, but I thought from that point onwards we were magnificent, and with 10 men.

"The effort and desire to try to get back on level terms was outstanding. Unfortunately at the moment we are getting decisions against us, and we are disappointed again by the referee's decision.

"We feel the lad went down too easily - it is difficult for referees, he has bought it. But it is very harsh on us."

Check out photos from Wednesday's Premier League matches on the BBC Sport Facebook page. 

Lineup, Bookings (6) & Substitutions (6)

Sunderland

  • 25 Mannone
  • 02 Bardsley Booked (Celustka - 45' )
  • 28 Alonso
  • 14 Colback
  • 16 O'Shea
  • 05 Brown
  • 07 Larsson
  • 04 Ki
  • 17 Altidore (Fletcher - 67' )
  • 11 Johnson (Gardner - 87' )
  • 31 Borini Booked

Substitutes

  • 08 Gardner
  • 09 Fletcher
  • 10 Wickham
  • 12 Celustka
  • 23 Giaccherini
  • 27 Vergini
  • 32 Ustari

Stoke City

  • 01 Begovic
  • 20 Cameron
  • 03 Pieters
  • 06 Whelan
  • 17 Shawcross
  • 12 Wilson Booked
  • 09 Odemwingie (Guidetti - 91' )
  • 15 N'Zonzi Dismissed after an earlier booking
  • 25 Crouch (Walters - 65' )
  • 16 Adam Booked
  • 24 Assaidi (Arnautovic - 72' )

Substitutes

  • 05 Muniesa
  • 08 Palacios
  • 10 Arnautovic
  • 19 Walters
  • 23 Guidetti
  • 29 Sørensen
  • 32 Ireland
Ref: Robert Madley
Att: 34,745

Match Stats

Shots

16 14

On target

6 5

Corners

2 3

Fouls

16 15

Live Text Commentary

Full time

Full Time Match ends, Sunderland 1, Stoke City 0.

90:00 +4:18 Full time

Full Time Second Half ends, Sunderland 1, Stoke City 0.

90:00 +3:54

Corner, Sunderland. Conceded by Asmir Begovic.

90:00 +3:51

Attempt saved. Jack Colback (Sunderland) left footed shot from the left side of the box is saved in the top left corner. Assisted by Craig Gardner.

90:00 +2:36

Foul by John Guidetti (Stoke City).

90:00 +2:36

Jack Colback (Sunderland) wins a free kick in the defensive half.

90:00 +0:15

Attempt missed. Marc Wilson (Stoke City) header from the centre of the box is too high. Assisted by Glenn Whelan with a cross following a corner.

90:00 +0:01 Substitution

Substitution Substitution, Stoke City. John Guidetti replaces Peter Odemwingie.

89:36

Corner, Stoke City. Conceded by Wes Brown.

88:49

Peter Odemwingie (Stoke City) wins a free kick in the attacking half.

88:49

Foul by Jack Colback (Sunderland).

86:41 Substitution

Substitution Substitution, Sunderland. Craig Gardner replaces Adam Johnson.

85:52

Attempt missed. Wes Brown (Sunderland) header from very close range is close, but misses to the left. Assisted by Adam Johnson with a cross following a corner.

85:14

Corner, Sunderland. Conceded by Marc Wilson.

85:12

Attempt blocked. Fabio Borini (Sunderland) right footed shot from the right side of the box is blocked. Assisted by Ki Sung-Yueng.

82:58

Ryan Shawcross (Stoke City) hits the bar with a header from the centre of the box. Assisted by Geoff Cameron with a cross.

81:36

Erik Pieters (Stoke City) wins a free kick in the defensive half.

81:36

Foul by Adam Johnson (Sunderland).

78:19 Booking

Booking Fabio Borini (Sunderland) is shown the yellow card for a bad foul.

78:12

Geoff Cameron (Stoke City) wins a free kick in the defensive half.

78:12

Foul by Fabio Borini (Sunderland).

77:23

Attempt saved. Charlie Adam (Stoke City) left footed shot from the right side of the box is saved in the bottom right corner.

77:21

Attempt blocked. Charlie Adam (Stoke City) left footed shot from outside the box is blocked.

76:25

Geoff Cameron (Stoke City) wins a free kick in the attacking half.

76:25

Foul by Jack Colback (Sunderland).

75:13

Ryan Shawcross (Stoke City) wins a free kick in the defensive half.

75:13

Foul by Fabio Borini (Sunderland).

73:47

Attempt saved. Peter Odemwingie (Stoke City) right footed shot from the right side of the box is saved in the bottom left corner. Assisted by Geoff Cameron.

72:48

Erik Pieters (Stoke City) wins a free kick in the defensive half.

72:48

Foul by Ondrej Celustka (Sunderland).

71:02 Substitution

Substitution Substitution, Stoke City. Marko Arnautovic replaces Oussama Assaidi.

70:18

Corner, Sunderland. Conceded by Asmir Begovic.

70:17

Attempt saved. Sebastian Larsson (Sunderland) right footed shot from outside the box is saved in the bottom left corner. Assisted by Jack Colback.

66:20 Substitution

Substitution Substitution, Sunderland. Steven Fletcher replaces Jozy Altidore.

66:00

Foul by Erik Pieters (Stoke City).

66:00

Jozy Altidore (Sunderland) wins a free kick in the defensive half.

64:12 Substitution

Substitution Substitution, Stoke City. Jonathan Walters replaces Peter Crouch.

57:48

Attempt missed. Adam Johnson (Sunderland) left footed shot from the right side of the box is close, but misses to the left. Assisted by Fabio Borini.

56:13

Offside, Sunderland. Fabio Borini tries a through ball, but Jozy Altidore is caught offside.

56:11

Attempt blocked. Fabio Borini (Sunderland) right footed shot from outside the box is blocked. Assisted by Ki Sung-Yueng.

55:08

Attempt blocked. Sebastian Larsson (Sunderland) right footed shot from the centre of the box is blocked.

55:07

Attempt saved. Jozy Altidore (Sunderland) right footed shot from the centre of the box is saved in the centre of the goal. Assisted by Sebastian Larsson.

54:32

Attempt blocked. Sebastian Larsson (Sunderland) right footed shot from outside the box is blocked.

52:48 Dismissal

Dismissal Second yellow card to Steven N'Zonzi (Stoke City) for a bad foul.

52:34

Foul by Steven N'Zonzi (Stoke City).

52:34

Jozy Altidore (Sunderland) wins a free kick in the attacking half.

51:06

Peter Odemwingie (Stoke City) wins a free kick in the defensive half.

51:06

Foul by Marcos Alonso (Sunderland).

49:48 Booking

Booking Marc Wilson (Stoke City) is shown the yellow card for a bad foul.

49:17

Foul by Marc Wilson (Stoke City).

49:17

Jozy Altidore (Sunderland) wins a free kick in the defensive half.

49:11

Attempt blocked. Erik Pieters (Stoke City) left footed shot from the left side of the box is blocked. Assisted by Oussama Assaidi.

47:57

Foul by Peter Odemwingie (Stoke City).

47:57

Fabio Borini (Sunderland) wins a free kick on the left wing.

47:25

Foul by Peter Odemwingie (Stoke City).

47:25

Marcos Alonso (Sunderland) wins a free kick in the defensive half.

47:02

Attempt missed. Ryan Shawcross (Stoke City) header from the centre of the box misses to the left. Assisted by Glenn Whelan with a cross following a corner.

46:41

Corner, Stoke City. Conceded by Marcos Alonso.

45:24

Erik Pieters (Stoke City) wins a free kick in the defensive half.

45:24

Foul by Ondrej Celustka (Sunderland).

45:00

Second Half begins Sunderland 1, Stoke City 0.

45:00 Substitution

Substitution Substitution, Sunderland. Ondrej Celustka replaces Phillip Bardsley because of an injury.

45:00 +1:07 Half time

Half Time First Half ends, Sunderland 1, Stoke City 0.

45:00 +0:35

Attempt missed. Peter Crouch (Stoke City) left footed shot from the centre of the box misses to the left. Assisted by Erik Pieters.

44:32 Booking

Booking Phillip Bardsley (Sunderland) is shown the yellow card for a bad foul.

44:15

Steven N'Zonzi (Stoke City) wins a free kick in the defensive half.

44:15

Foul by Phillip Bardsley (Sunderland).

42:08

Erik Pieters (Stoke City) wins a free kick in the defensive half.

42:08

Foul by Sebastian Larsson (Sunderland).

40:36

Charlie Adam (Stoke City) wins a free kick in the attacking half.

40:36

Foul by Ki Sung-Yueng (Sunderland).

39:59 Booking

Booking Charlie Adam (Stoke City) is shown the yellow card.

39:45

Charlie Adam (Stoke City) has gone down, but that's a dive.

38:16

Wes Brown (Sunderland) wins a free kick in the defensive half.

38:16

Foul by Peter Odemwingie (Stoke City).

38:14

Attempt saved. Ryan Shawcross (Stoke City) header from the centre of the box is saved in the centre of the goal. Assisted by Charlie Adam with a cross.

37:17

Foul by Jozy Altidore (Sunderland).

37:17

Peter Odemwingie (Stoke City) wins a free kick on the left wing.

36:34

Foul by Ki Sung-Yueng (Sunderland).

36:34

Charlie Adam (Stoke City) wins a free kick in the attacking half.

36:00

Attempt missed. Geoff Cameron (Stoke City) header from the right side of the six yard box is too high following a corner.

35:35

Corner, Stoke City. Conceded by Phillip Bardsley.

33:29 Booking

Booking Steven N'Zonzi (Stoke City) is shown the yellow card for a bad foul.

33:00

Jozy Altidore (Sunderland) wins a free kick in the attacking half.

33:00

Foul by Steven N'Zonzi (Stoke City).

31:08

Adam Johnson (Sunderland) wins a free kick in the defensive half.

31:08

Foul by Erik Pieters (Stoke City).

30:57

Attempt saved. Peter Crouch (Stoke City) right footed shot from a difficult angle on the left is saved in the bottom right corner.

30:55

Attempt saved. Peter Crouch (Stoke City) left footed shot from the left side of the six yard box is saved in the bottom left corner.

29:42

Foul by Adam Johnson (Sunderland).

29:42

Erik Pieters (Stoke City) wins a free kick in the defensive half.

26:49

Attempt missed. Marcos Alonso (Sunderland) left footed shot from outside the box misses to the left. Assisted by Fabio Borini.

25:30

Jozy Altidore (Sunderland) wins a free kick in the defensive half.

25:30

Foul by Ryan Shawcross (Stoke City).

22:59

Foul by Jozy Altidore (Sunderland).

22:59

Steven N'Zonzi (Stoke City) wins a free kick in the defensive half.

22:20

Attempt missed. Charlie Adam (Stoke City) left footed shot from outside the box is close, but misses to the right. Assisted by Peter Odemwingie.

20:24

Ki Sung-Yueng (Sunderland) wins a free kick in the defensive half.

20:24

Foul by Peter Odemwingie (Stoke City).

18:37

Adam Johnson (Sunderland) wins a free kick on the right wing.

18:37

Foul by Erik Pieters (Stoke City).

16:37 Goal scored

Goal! Goal! Sunderland 1, Stoke City 0. Adam Johnson (Sunderland) right footed shot from the right side of the six yard box to the bottom right corner.

16:34

Attempt saved. Fabio Borini (Sunderland) right footed shot from outside the box is saved in the bottom right corner. Assisted by Sebastian Larsson.

15:38

Attempt missed. Oussama Assaidi (Stoke City) right footed shot from the left side of the box is high and wide to the right. Assisted by Charlie Adam.

14:17

Attempt missed. Phillip Bardsley (Sunderland) right footed shot from the right side of the box is close, but misses to the left. Assisted by Marcos Alonso with a cross.

12:59

Attempt missed. Sebastian Larsson (Sunderland) right footed shot from the right side of the box is high and wide to the right. Assisted by Adam Johnson.

11:54

Attempt missed. Phillip Bardsley (Sunderland) right footed shot from outside the box is too high. Assisted by Wes Brown with a headed pass following a set piece situation.

11:07

Sebastian Larsson (Sunderland) wins a free kick in the attacking half.

11:07

Foul by Charlie Adam (Stoke City).

8:18

Foul by John O'Shea (Sunderland).

8:18

Peter Crouch (Stoke City) wins a free kick on the left wing.

6:21

Attempt saved. Sebastian Larsson (Sunderland) right footed shot from outside the box is saved in the centre of the goal. Assisted by Fabio Borini.

2:33

Adam Johnson (Sunderland) wins a free kick on the right wing.

2:33

Foul by Erik Pieters (Stoke City).

0:00

First Half begins.

0:00

Lineups are announced and players are warming up.

Live data and text provided by our data suppliers