Sunderland's revival under Martin O'Neill continued as James McClean's goal made it five wins in six league games at the expense of 10-man Stoke.
Stoke defender Robert Huth's first-half lunge on David Meyler was punished with a red card.
And McClean capitalised by latching on to Stephane Sessegnon's through ball before applying a cool finish.
The game was played with snow falling throughout, with the white lines having to be repainted blue.
Conditions 'borderline' in Sunderland win - Martin O'Neill
Those conditions hampered any prospect of a free-flowing game, with chances few and far between before Huth's dismissal just before half-time.
The defender slid in to tackle Meyler but missed the ball entirely, with referee Martin Atkinson showing the red card.
Manager Tony Pulis was furious and protested to the officials as the players went off at half-time.
Midway through the second half, Sunderland capitalised on the extra player advantage.
Sessegnon was given enough time to turn and send McClean through into the area. The Northern Irishman was strong enough to shrug off Andy Wilkinson before cutting across Ryan Shawcross and slotting past Sorensen.
Pulis fury at play-acting 'disease'
Stoke persisted with a long ball approach as the snow-fall intensified. Peter Crouch had a good chance but headed straight at Simon Mignolet, while Ricardo Fuller cut in on his right foot on the edge of the area but could only manage a tame shot.
Stoke manager Tony Pulis:
"The disappointing thing is the sending off. Robert skids in but doesn't touch the player.
"The referee hasn't taken the conditions into consideration. The player rolls around and stays down.
"But Robert hasn't touched him. The player tries to get him sent off. It's a disease that's creeping into the game."
Sunderland manager Martin O'Neill:
"I haven't seen it back. Referees are talking now about challenges with a foot off the ground. I thought it was a nasty challenge.
"James McClean is having a great time. He is performing brilliantly for us. I couldn't ask for any more."
Full Time The final whistle goes and the game is over.
Free kick awarded for a foul by Peter Crouch on Craig Gardner. Simon Mignolet takes the free kick.
Stephane Sessegnon fouled by Rory Delap, the ref awards a free kick. Michael Turner takes the free kick.
The referee blows for offside against Stephane Sessegnon. Free kick taken by Thomas Sorensen.
Marc Wilson takes a shot. Stephane Sessegnon gets a block in. Corner taken by Glenn Whelan from the left by-line, Shot from close range by Peter Crouch misses to the right of the goal.
Substitution Ahmed Elmohamady replaces David Meyler.
Substitution Ryan Shotton comes on in place of Andy Wilkinson.
Ricardo Fuller takes a shot. Save by Simon Mignolet.
Ricardo Fuller concedes a free kick for a foul on Phillip Bardsley. Free kick taken by Phillip Bardsley.
Inswinging corner taken right-footed by Sebastian Larsson.
Peter Crouch takes a shot. Save by Simon Mignolet.
Shot from just outside the area by Jonathan Walters misses to the right of the target.
Free kick awarded for a foul by Michael Turner on Ricardo Fuller. Free kick crossed right-footed by Glenn Whelan from right wing, Simon Mignolet makes a save.
Peter Crouch fouled by Michael Turner, the ref awards a free kick. Glenn Whelan takes the direct free kick.
Shot from outside the box by Rory Delap goes wide right of the target.
Stephane Sessegnon provided the assist for the goal.
59:53 Goal scored
Goal - James McClean - Stoke 0 - 1 Sunderland James McClean fires in a goal from inside the penalty area to the bottom right corner of the goal. Stoke 0-1 Sunderland.
Jonathan Woodgate gives away a free kick for an unfair challenge on Stephane Sessegnon. Direct free kick taken by Phillip Bardsley.
Corner from the left by-line taken by Sebastian Larsson, clearance by Jonathan Walters.
Foul by Rory Delap on Jack Colback, free kick awarded. Direct free kick taken by Michael Turner.
Free kick awarded for a foul by Michael Turner on Peter Crouch. Free kick taken by Ryan Shawcross.
Glenn Whelan takes the free kick. Marc Wilson takes a shot. Michael Turner gets a block in. Corner taken by Glenn Whelan.
Booking John O'Shea receives a caution for unsporting behaviour.
Foul by John O'Shea on Jonathan Walters, free kick awarded.
Free kick awarded for an unfair challenge on David Meyler by Ricardo Fuller. Free kick taken by John O'Shea.
The ball is delivered by James McClean, Header on goal by Stephane Sessegnon from inside the box goes harmlessly over the target.
The ball is swung over by James McClean, clearance by Marc Wilson. Corner taken by James McClean from the right by-line, clearance by Jonathan Walters.
The referee gets the second half underway.
45:00 +1:54 Half time
Half Time It is the end of the first-half.
Simon Mignolet restarts play with the free kick.
Substitution Jonathan Woodgate on for Jermaine Pennant.
Dismissal Robert Huth shown a red card.
Free kick awarded for a foul by Robert Huth on David Meyler.
Handball by Craig Gardner. Thomas Sorensen restarts play with the free kick.
Phillip Bardsley produces a cross, clearance by Robert Huth.
Jonathan Walters takes a shot. Save made by Simon Mignolet.
The ball is sent over by Phillip Bardsley, save made by Thomas Sorensen.
Substitution Cameron Jerome leaves the field to be replaced by Ricardo Fuller.
Jack Colback fouled by Robert Huth, the ref awards a free kick. Sebastian Larsson crosses the ball in from the free kick, blocked by Jermaine Pennant. Inswinging corner taken left-footed by Kieran Richardson from the right by-line to the near post, clearance made by Robert Huth.
The ball is swung over by James McClean, Robert Huth manages to make a clearance.
Unfair challenge on Cameron Jerome by David Meyler results in a free kick. Direct free kick taken by Ryan Shawcross.
Free kick awarded for an unfair challenge on Simon Mignolet by Cameron Jerome. Simon Mignolet restarts play with the free kick.
The ball is delivered by Marc Wilson, save by Simon Mignolet.
Stephane Sessegnon is caught offside. Indirect free kick taken by Thomas Sorensen.
Long range shot from Stephane Sessegnon misses to the left of the goal.
Sebastian Larsson takes a inswinging corner to the near post, clearance made by Peter Crouch.
Jonathan Walters crosses the ball.
Free kick awarded for an unfair challenge on Jack Colback by Jermaine Pennant. Free kick taken by Michael Turner.
Unfair challenge on Jack Colback by Glenn Whelan results in a free kick. Free kick taken by Michael Turner.
Craig Gardner takes a shot. Robert Huth gets a block in.
Marc Wilson concedes a free kick for a foul on Craig Gardner. Free kick taken by John O'Shea.
Corner taken by Jermaine Pennant, clearance by Craig Gardner.
The ball is crossed by Glenn Whelan, save by Simon Mignolet.
Free kick awarded for a foul by David Meyler on Jermaine Pennant. Free kick crossed right-footed by Jermaine Pennant, clearance made by Kieran Richardson. Corner from right by-line taken by Jermaine Pennant.
The ball is delivered by Jermaine Pennant.
Marc Wilson takes a shot. Blocked by Michael Turner.
Jermaine Pennant decides to take the corner short.
The ball is sent over by Jermaine Pennant.
Jermaine Pennant concedes a free kick for a foul on Jack Colback. Kieran Richardson takes the free kick.
The game kicks-off.
Live text and data provided by The Press Association
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.