Two sublime goals extended Sunderland's renaissance under Martin O'Neill and ended Swansea's four-game unbeaten run.
Stephane Sessegnon found the top-right corner from the left side of the penalty area to put Sunderland ahead.
Sebastian Larsson had earlier struck the Swansea post, before Scott Sinclair wasted the visitors' best chance by firing over from six yards.
Swansea dominated without threatening and Craig Gardner's late 25-yard volley wrapped up victory.
The substitute's clincher five minutes from time was a rare effort on goal from Sunderland, who hardly threatened after Sessegnon's opener.
O'Neill delighted with 'terrific' win
But Swansea's inability to offer a cutting edge on their travels was again evident, with home keeper Simon Mignolet troubled only twice, consigning Brendan Rodgers's side to a seventh away defeat in 11 games.
The victory moves Sunderland above Swansea into 10th place as O'Neill collected his 10th point from a possible 12 at home since taking over.
Sunderland's opener came as a breathless opening 15 minutes ended with a moment of genuine quality.
After a quick exchange of passes with James McClean down the left flank, Sessegnon opened up his body to curl an unstoppable effort into the top right corner.
The precise strike was too good for Swansea goalkeeper Michel Vorm, who had earlier deflected Larsson's volley on to the foot of the post.
did you know?
This was Sunderland's first win over Swansea in eight attempts
Swansea have now failed to score in six of their 11 away Premier League games
Swansea, basking in the plaudits of their 3-2 win over Arsenal last Sunday, also threatened in the opening exchanges.
Sunderland defender Wes Brown, back after a three-game injury absence, denied Nathan Dyer with a well-timed last-ditch tackle, before Phil Bardsley followed suit to stop Scott Sinclair on the opposite flank.
Sinclair was guilty of wasting a glorious chance when he blasted over from barely six yards from Dyer's low cross.
The visitors went on to dominate the rest of the half, with Gylfi Sigurdsson slotting seamlessly into the Swansea midfield as he made his first start.
His far-post cross gave Danny Graham a great chance to level, but the striker failed to keep his header down.
Swansea boss Brendan Rodgers satisfied despite Sunderland defeat
Despite Swansea's dominance of possession, Sunderland stopper Mignolet was not tested until the 57th minute when he palmed away Sigurdsson's free-kick.
The home crowd grew impatient as Sunderland struggled to find any cohesion, but the Black Cats suddenly came to life in the final 15 minutes.
Sessegnon headed wide from McClean's inviting cross, before Vorm needed to be alert as he rushed out to beat Connor Wickham to the ball at the edge of the box.
Wickham wasted a glorious chance to seal victory when he fired wildly wide from close range, but the points were secured when Gardner struck.
The substitute controlled Sessegnon's crossfield pass on his chest before sending a dipping 25-yard volley into the top corner.
Full Time The final whistle is blown by the referee.
Substitution Ahmed Elmohamady replaces Sebastian Larsson.
Effort from long range by Lee Cattermole goes wide right of the target.
Sebastian Larsson takes a short corner.
Craig Gardner challenges Josh McEachran unfairly and gives away a free kick. Neil Taylor takes the free kick.
Assist on the goal came from Stephane Sessegnon.
84:23 Goal scored
Goal! - Craig Gardner - Sunderland 2 - 0 Swansea Craig Gardner grabs a goal from outside the box to the top left corner of the goal. Sunderland 2-0 Swansea.
Effort on goal by Scott Sinclair from just outside the area goes harmlessly over the target.
Connor Wickham produces a left-footed shot from deep inside the area which goes wide of the left-hand post.
Substitution Craig Gardner comes on in place of David Vaughan.
Substitution (Swansea) makes a substitution, with Wayne Routledge coming on for Leon Britton.
Leon Britton produces a left-footed shot from just outside the penalty box that misses to the left of the target.
Close range header by Stephane Sessegnon goes wide of the left-hand post.
Corner taken by David Vaughan from the right by-line played to the near post.
Foul by Lee Cattermole on Joe Allen, free kick awarded. Steven Caulker restarts play with the free kick.
Foul by Kieran Richardson on Nathan Dyer, free kick awarded. Free kick taken by Angel Rangel.
Steven Caulker concedes a free kick for a foul on Stephane Sessegnon. Wes Brown takes the free kick.
Substitution Josh McEachran is brought on as a substitute for Gylfi Sigurdsson.
Ashley Williams challenges Connor Wickham unfairly and gives away a free kick. Free kick crossed right-footed by Sebastian Larsson.
Steven Caulker takes a shot. Blocked by Wes Brown.
Outswinging corner taken by Gylfi Sigurdsson from the right by-line played to the near post, clearance by Lee Cattermole.
Outswinging corner taken right-footed by Gylfi Sigurdsson played to the near post, clearance made by Kieran Richardson.
David Vaughan gives away a free kick for an unfair challenge on Joe Allen. Shot comes in from Gylfi Sigurdsson from the free kick, save by Simon Mignolet.
Ashley Williams concedes a free kick for a foul on Simon Mignolet. Simon Mignolet restarts play with the free kick.
Free kick awarded for an unfair challenge on Joe Allen by Lee Cattermole. Strike comes in from Gylfi Sigurdsson from the free kick, blocked by Lee Cattermole.
The game restarts for the second half.
45:00 +3:24 Half time
Half Time The referee calls an end to the first half.
Corner from right by-line taken by Gylfi Sigurdsson.
Corner taken right-footed by Gylfi Sigurdsson from the right by-line to the near post, clearance by Connor Wickham.
Danny Graham has an effort at goal from outside the penalty box missing to the wide right of the target.
Gylfi Sigurdsson takes a shot. Save by Simon Mignolet.
Gylfi Sigurdsson takes a shot. Blocked by Lee Cattermole.
Gylfi Sigurdsson has an effort at goal from outside the penalty box missing to the wide left of the goal.
The assistant referee flags for offside against Connor Wickham. Free kick taken by Angel Rangel.
Kieran Richardson challenges Nathan Dyer unfairly and gives away a free kick. Direct free kick taken by Nathan Dyer.
Danny Graham has a headed effort from close range and clears the crossbar.
Free kick awarded for a foul by Connor Wickham on Steven Caulker. Steven Caulker takes the direct free kick.
Free kick awarded for a foul by Sebastian Larsson on Neil Taylor. Direct free kick taken by Neil Taylor.
Scott Sinclair gives away a free kick for an unfair challenge on Phillip Bardsley. Free kick crossed right-footed by Sebastian Larsson. David Vaughan produces a right-footed shot from just outside the area that goes harmlessly over the target.
Assist by James McClean.
13:43 Goal scored
Goal! - Stephane Sessegnon - Sunderland 1 - 0 Swansea A goal is scored by Stephane Sessegnon from inside the penalty box to the top right corner of the goal. Sunderland 1-0 Swansea.
Close range shot by Scott Sinclair clears the bar.
Direct free kick taken by Michel Vorm.
Substitution Connor Wickham comes on in place of Nicklas Bendtner.
Unfair challenge on Ashley Williams by James McClean results in a free kick.
Angel Rangel challenges Nicklas Bendtner unfairly and gives away a free kick. Kieran Richardson restarts play with the free kick.
Joe Allen concedes a free kick for a foul on Phillip Bardsley. Phillip Bardsley restarts play with the free kick.
Shot from inside the six-yard box by Sebastian Larsson hits the post.
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.