Gabriel Jesus' opener and a penalty from Ilkay Gundogan put Pep Guardiola's side in the driving seat after 25 minutes at Wembley.
But, as in their 3-2 defeat to Manchester United last weekend and Champions League loss at the hands of Liverpool in midweek, City looked set to have a lead wiped out when Christian Eriksen reduced the arrears in the 42nd minute.
The visitors withstood Spurs pressure early in the second half and, having passed up a pair of clear chances in quick succession, Raheem Sterling sealed the points by beating Hugo Lloris on the rebound after the Tottenham goalkeeper denied Gabriel Jesus.
"We spoke before the game that the performances against United and Liverpool were good. We deserved to win these games but it didn't happen. This is football," De Bruyne told Sky Sports.
"Today we scored the goals and we defended better.
"Everybody felt it was tough, everybody feels a little bit of tiredness. It's been a tough game for us.
"Spurs didn't have a game for a week. That's the advantage they had. The mental toughness of this team is unbelievable."
Sterling - who won the first-half spot kick despite replays showing Lloris' rash lunge made contact with him fractionally outside the box - was frustrated by passing up opportunities as his did in the Manchester derby, despite eventually scoring his 17th league goal of the season.
"In the game against United I snatched at a few," he told Sky Sports. "Today I tried to take my time, got around the goalkeeper and the defender blocked it."
Sterling added: "We needed a big turnaround and I thought from the beginning we started off strong.
"They put us under pressure but we dealt with it well and came through."