Gareth Bale looked to put the home side ahead inside the opening three minutes, but Joe Hart stopped the Wales international's 25-yard effort.
The current Premier League champions responded well to Tottenham's bright start, as James Milner flicked the ball into the box for Samir Nasri, who volleyed the ball past Hugo Lloris to give City the lead.
Spurs thought that they should have had a penalty when Gareth Barry appeared to handle the ball as Michael Dawson looked to head in for an equaliser, but referee Lee Mason waved their appeals away.
Lloris was needed to make two good saves just before half time, as Edin Dzeko and Carlos Tevez looked to double the visitors' advantage.
Tottenham pushed hard to get back on level terms in the second half, and were rewarded in the 74th minute when Clint Dempsey tapped the ball in from a Bale cross.
Andre Villas-Boas's side took the lead five minutes later, as substitute Jermain Defoe curled the ball past Hart, leaving the England keeper rooted to the spot.
Bale rounded off a stunning eight minutes with a third for Tottenham, as Tom Huddlestone picked the Spurs playmaker out and Bale chipped the ball over Hart, who had come off his line.
Roberto Mancini's side tried to find a way back into the match in the closing minutes, but the resurgent Spurs team were able to stop City from getting back into the tie.
The result leaves Tottenham fifth in the Premier League table, level on points with Chelsea, while City remain in second.