Swann finished with four for 68 in Pakistan's first-innings 308, a lead of 75, with Azhar Ali stranded on his highest Test score of 92 not out.
Pakistan's lead looked all the more challenging when captain Andrew Strauss was caught in the slips off the fourth ball of the first over from Mohammad Amir for four.
England, who lead 2-0 in the four-match series, finished the day on six for one.
For once in the series, England's pace bowlers struggled to make an impression on a Pakistan top order bolstered by the return of Mohammad Yousuf from a short-lived retirement.
Swann bowled unchanged between lunch and tea from the Vauxhall end to dismiss captain Salman Butt (17), nightwatchman Wahab Riaz (27) and Yousuf (56). Yousuf's dismissal caught and bowled gave Swann 100 Test wickets in 23 matches.
It came after an embarrassed International Cricket Council (ICC) admitted it had made a mistake on Wednesday by omitting the off-spinner from its initial list of players in contention for the international player of the year award.
Pakistan passed England's meagre first-innings total of 233 with five wickets still in hand. But after Umar Akmal had run himself out for 38, including a straight six off Swann, the batting collapsed in familiar fashion.
Stuart Broad and James Anderson ran through the tail with the second new ball although they could not dismiss Azhar who took Pakistan past the 300 mark for the first time in two Tests each against England and Australia this season.
As always Yousuf had plenty of time to play the ball despite his lack of match practice, stroking eight boundaries including six fours off Steven Finn. He refused to take any risks until Swann enticed him into a uppish drive which the bowler accepted gleefully.
EARLY BREAKTHROUGH
Yousuf, 35, the record holder for most runs in a calendar year, was banned for life by the Pakistan Cricket Board (PCB) after the team he led in Australia this year failed to win a single match.
Understandably Yousuf chose to retire, only to change his mind when the PCB rescinded their draconian punishment and he was belatedly flown to England.
Finn made an early breakthrough with his second ball of the day when Yasir Hameed was caught behind for 36 after an indecisive wave at a good length ball.
Butt, who was dropped on four by Eoin Morgan at backward point, square-drove Swann's first ball for a boundary but then edged the second to wicketkeeper Matt Prior who held the catch after a brief juggling act.
Riaz, Pakistan's hero on Wednesday with five wickets on his test debut, lingered for three minutes short of two hours before he was given out lbw to Swann bowling around the wicket. The batsman appealed but third umpire Billy Bowden saw no reason to overturn Steve Davis's decision.
While wickets fell all around him, Azhar batted with maturity and calm good sense.
He struck 14 boundaries in more than four hours at the crease and shared a last-wicket partnership of 38 with Mohammad Asif (8), who was given a life on four when Strauss dropped a low chance at first slip.