However, they were opened up after 20 minutes by Connor Roberts who drew a foul from Fabian Delph in the penalty area and Matt Grimes converted from the spot to give Swansea the lead. Nine minutes later it was two as former Manchester City youth player Bersant Celina finished off a flowing Swansea move to stun his former employers.
The Premier League side struggled to break Swansea down after the break, but Bernardo Silva's goal in the 68th minute got City back in the match. From then on in it was all Manchester City and an own goal off the back of Swansea goalkeeper Kristoffer Nordfeldt after substitute Sergio Aguero's 77th-minute penalty had come back off the post levelled the tie.
Aguero missed a glorious chance to score seven minutes from time, but the Argentine striker had the final say when he headed the winner two minutes from time. (Reporting by Peter Hall, editing by Ed Osmond)