Chelsea scored six against Wolves, but Everton failed at Leeds, Wigan won at West Ham and Aston Villa dumped out Man City. Aston Villa twice trailed at Manchester City but fought back through a Gareth Barry own goal and Gabriel Agbonlahor to cancel out strikes by Mario Balotelli and Aleksandar Kolarov and take the game into extra time.
Charles N'Zogbia put the visitors ahead and a second goal for Agbonlahor clinched the match and stunned the Premier League champions.
Everton left their fightback too late at Elland Road and exited the competition 2-1 at Championship Leeds.
Aidan White gave the Yorkshire side a fourth minute lead which was doubled with twenty minutes remaining by Rodolph Austin.
Wigan fell behind at West Ham to an early Modibo Maiga effort, but rallied through two goals by Mauro Boselli, an Ivan Ramis strike and a Jordi Gomez penalty to come out on top in the all Premiership clash.
Swansea needed a last-minute goal by Garry Monk to secure a hard-earned 3-2 win at League One Crawley.
The Swans went ahead through Miguel Michut after 27 minutes before the hosts levelled through Josh Simpson just before half-time.