Skipper Grant Holt struck twice as Norwich City produced a barnstorming second-half performance to secure Premier League victory over Swansea at the Liberty Stadium.

The Canaries trailed at the interval to a Danny Graham goal and it might have been worse but for the returning Elliott Ward making a vital clearance from the feet of Swansea's leading scorer.

But Paul Lambert's men scored three times in 16 minutes early in the second period with Holt striking either side of a goal by Anthony Pilkington.

Holt nodded in from Ward's cross to equalise two minutes after the break, then Pilkington's shot was diverted in by defender Neil Taylor to make it 2-1.

Holt scored his 11th of the season from Elliott Bennett's pass to extend his side's lead.

But the Canaries, who lost Adam Drury to a back problem and later replaced the hobbling Bennett, were tested in the closing stages with Graham scoring from the penalty spot three minutes from time after Holt had tugged the shirt of opposing skipper Ashley Williams.

A fine save from John Ruddy denied Steven Caulker a last-gasp equaliser as City finished the match with Kyle Naughton limping badly.

Ward was magnificent on his return to the side and victory made it City's third double of the season and their first win at Swansea for 50 years.

Norwich boss Lambert made three changes from the team that started the 2-0 win over Bolton. With central defenders Daniel Ayala and Zak Whitbread both ruled out by hamstring injuries, Ward made his first appearance of the season after seven months out with a knee injury, and was partnered by Russell Martin, who kept his place in the centre of defence after coming off the bench against Bolton.

The other change was Bennett's inclusion at the expense of Wes Hoolahan.

Swansea made one change after the 2-1 win at West Bromwich Albion with Josh McEachran replacing Joe Allen, ruled out by a hamstring problem.

The Canaries lined up in 4-4-2 formation with Surman forming a central midfield pairing with Fox, and Bennett and Pilkington playing wide.

There were a couple of anxious moments in the opening five minutes, first when Bennett was caught napping by Taylor, enabling Dyer to get in a shot that was deflected off course, then when Russell Martin struggled to control a dropping ball and Sigurdsson's shot was also diverted across the edge of the Norwich area.

The Canaries, with Holt booed at every touch, began to piece some decent moves together and a foul on Jackson gave them a free-kick more than 25 yards out, but Pilkington's attempt was well covered by goalkeeper Vorm.

City earned a corner when Taylor had to head clear from Jackson's cross, and when it was taken short, Fox played a one-two before delivering a cross that Vorm held under pressure from Holt.

A neat passing move by the left edge of the Swansea area ended with Holt whipping in a shot from a tight angle, but Vorm was equal to it.

Midway through the half, however, and without having posed a major threat, Swansea went ahead through Graham's 11th goal of the season.

Vorm's clearance found Sigurdsson and he in turn found Dyer, who put the striker through and he had the fairly easy task of sidefooting his shot out of reach of Ruddy's left hand.

There was an angry exchange soon after the restart when Rangel protested he had been caught in the face by Holt, though replays showed the merest flick of the hand rather than anything approaching an arm. Referee Atkinson spoke to the City skipper but did not produce a card.

Pilkington had a shot deflected wide after a corner and, as Norwich continued to press, Ward miscued from the edge of the area and sent his shot swirling over the top.

Fox almost landed Ruddy in real trouble with an awful backpass that the keeper had to race out to clear, under pressure from Graham.

Drury needed attention after landing badly on his back as he attempted to clear, but was able to resume.

The Canaries produced their best opening yet eight minutes before the interval when Pilkington crossed from the left and Surman got in a close-range header, but straight at Vorm.

Ward came to the rescue for Norwich when he diverted a cross from Sinclair over the bar just as Graham seemed poised to score his second, after Dyer had again caused problems.

Drury was booked after 43 minutes for bringing down Dyer, the first yellow card of the afternoon.

• Half-time: Swansea City 1, Norwich City 0

Within two minutes of the restart, the Canaries were level as Holt scored his 10th goal of the season.

It came in bizarre fashion following a free-kick from Fox after Drury had been fouled by Dyer.

Russell Martin sliced an attempted volley high into the air, but Ward somehow managed to hook the ball back from the byline across the face of goal, where Holt headed home.

Ruddy saved from Graham and Caulker struck the woodwork with a header from the resulting corner as Swansea sought an immediate response, but there was another shock for the home crowd as City went 2-1 up in the 51st minute through Pilkington, his seventh goal of the season.

Bennett teed Pilkington up for the shot and his goalbound effort was diverted past Vorm by defender Taylor.

With 57 minutes gone, the Canaries reshuffled their defence as Drury made way for Barnett, Naughton switching to left-back, Russell Martin to right-back and the substitute partnering Ward in the centre.

The Canaries scored for the third time in the 63rd minute and it was Holt again with a clinical finish. Surman picked out Bennett and his pass was perfectly judged for Holt to drill a low right-foot shot past Vorm.

Holt was booked for removing his shirt as part of the celebration.

Swansea replaced McEachran with Gower before the game restarted.

Surman fired over the top from Jackson's pass when he might have done better, as the Canaries went in search of a fourth goal.

Swansea made a double change with 73 minutes gone as Routledge and Lita replaced Sinclair and Dyer.

Naughton almost made it 4-1 with a powerful effort that Vorm tipped on to the bar.

Bennett, who was hobbling, was replaced by Hoolahan with 13 minutes remaining.

There were appeals for a penalty when Naughton cut out a cross from Routledge at the expense of a corner.

Hoolahan was so close to extending City's lead when Vorm tipped his shot over the bar after Jackson and Holt combined to set up the chance.

Lambert made his final change when Morison was sent on for Jackson with seven minutes remaining.

A free-kick by Sigurdsson forced Ruddy into an important save from a free-kick but the resulting corner led to a penalty that brought Swansea back into the game.

Holt tugged Williams' shirt as the flag-kick came over and referee Atkinson pointed straight to the spot, Graham tucking the penalty away with just over three minutes remaining.

A quick break could have provided City with a fourth as Holt set up Morison for a shot that Vorm palmed away.

As the fourth official signalled five extra minutes, Naughton was hobbling badly and clearly in some trouble.

Graham shot wide from Sigurdsson's cross when he really should have equalised.

It was a dramatic finish to a very eventful second half and Caulker was denied in stoppage time when his header from a corner was brilliantly tipped over by Ruddy.

• Result: Swansea City 2, Norwich City 3

• Swansea City: Vorm; Rangel, Caulker, Williams, Taylor; Britton, McEachran (Gower, 64); Sigurdsson; Dyer (Lita, 73), Graham, Sinclair (Routledge, 73). Subs (not used): Tremmel, Monk, Richards, Moore.

• Norwich City: Ruddy; Naughton, Russell Martin, Ward, Drury (Barnett, 57); Bennett (Hoolahan, 77), Fox, Surman, Pilkington; Holt, Jackson (Morison, 83). Subs (not used): Steer, Crofts, Johnson, Wilbraham.

• Referee: Martin Atkinson (West Yorkshire)

• Attendance: 19,927

• Goals: Swansea: Graham (23, pen 87). Norwich: Holt (47, 63), Pilkington (51)

• Bookings: Norwich: Drury (43), Holt (64)