Steven Bergwijn was handed his Tottenham debut after joining from PSV Eindhoven last week, while Japhet Tanganga and Davinson Sanchez came in to replace Erik Lamela, Ryan Sessegnon and Jan Vertonghen in three changes from the 2-1 Premier League win over Norwich last time out.
City boasted two changes from the 1-0 win at Sheffield United in their last league outing as Sergio Aguero returned to the starting line-up ahead of Gabriel Jesus, while the injured Aymeric Laporte was replaced in defence by Fernandinho which allowed Ilkay Gundogan to start in central midfield.
City arrived having won 11 of their last 12 Premier League matches in London, and Kevin De Bruyne looked to put them ahead on eight minutes but he could only find the side-netting from a tight angle after being set up by Riyad Mahrez.
Raheem Sterling was fortunate to just see a yellow card after a poor challenge on Dele Alli which left his England team-mate requiring lengthy treatment on his ankle.
Aguero was inches away from firing City in front in the 27th minute as he was played through by Mahrez but watched as Hugo Lloris got the slightest of touches off his foot to divert the subsequent strike onto the post.
The game burst into life on 36 minutes when referee Mike Dean initially turned down a City penalty appeal when Aguero went down under a challenge from Serge Aurier in the area.
However, almost two minutes later, Dean then awarded a spot-kick under instruction from the Video Assistant Referee (VAR) only for Lloris to pull off a good stop to his left to deny Gundogan.
City had an immediate shout for a second penalty as Sterling went to ground when Lloris looked to prevent him getting to the rebound from his save, but there was nothing doing apart from a handful of bookings due to an ensuing melee, including one for Oleksandr Zinchenko, as Spurs wanted the City man handed a second yellow card for diving.
Aguero should have put City ahead before the break but somehow guided his close-range effort into the side-netting after being teed up by Sterling.
City were guilty of an even greater miss on 49 minutes when a mix-up between Tanganga and Lloris handed Aguero a chance, but Toby Alderweireld cleared his effort off the line. Sterling then teed up Gundogan but he was stretching as he guided his shot over an open goal from six yards.
The game swung in favour of Spurs just after the hour when birthday boy Harry Winks looked to counter-attack following a City corner and Zinchenko blatantly blocked his run which left Dean with no option but to issue a second yellow and therefore a red card.
And they took full advantage of their numerical superiority two minutes later when City failed to clear a corner and Lucas Moura found Bergwijn on the edge of the area with the debutant bringing the ball down on his chest before finding the bottom corner with a superb volley.
It was 2-0 on 71 minutes as substitute Tanguy Ndombele made an immediate impact as he threaded a great pass through to Heung-Min Son who saw his effort beat the dive of Ederson via a slight deflection off Fernandinho’s foot.
City kept pressing with Lloris doing well to tip a curling effort from De Bruyne over the top, before Jesus stung the palms of the France international custodian.
However, Spurs held on for the clean sheet, despite Sanchez heading onto to his own crossbar late on, while the three points takes them up to fifth and to within four points of Chelsea in fourth. City sit second just two points ahead of Leicester with Liverpool 22 points clear in top spot.