The Swans were able to go ahead in the ninth minute when Wayne Routledge drove into the area and was brought down by Potters skipper Ryan Shawcross. Scott Sinclair stepped up and produced a composed finish past Asmir Begovic to give the home side the early advantage.
Routledge was causing a few problems for Stoke and almost provided a second for Swansea when he skipped past Andy Wilkinson before putting a curling ball from the left in for Danny Graham who was inches off tucking it home for a second in the 14th minute.
Later in the half, Wilkinson was lucky not to be sent off for his high challenge on Nathan Dyer in the 40th minute, moments before Stoke missed a good chance when Rory Delap struck over the top.
Not too many clearcut chances were created by either side until Stoke's Glenn Whelan struck the post with a low free-kick just prior to the hour-mark as the match became a bit feisty.
Sinclair was unlucky not to double his side's lead in the 68th minute when Begovic came up with a top quality save from a well-struck shot after cutting back inside but they eventually did break Stoke down to score a second five minutes from time. Danny Graham pounced on a defensive error from Jonathan Woodgate before advancing to the top of the area and lifting past Begovic for his first Swansea goal.
The win was Swansea's second in their past three outings and allowed them to move up to 10th on the table as Stoke fell to eighth courtesy their third winless result in a row.