City was looking for its seventh straight victory and to maintain its unbeaten start to the season under new manager Guardiola, but came unstuck at White Hart Lane.
Tottenham, also unbeaten in the EPL this term, was particularly impressive in the first half, taking a 2-0 lead at the break.
An Aleksandar Kolarov own goal after a testing cross from Danny Rose and a Dele Alli strike from Son Heung-min's pass put Spurs on top.
After the break, Mauricio Pochettino's men might have gone further ahead as Erik Lamela saw his penalty saved by Claudio Bravo after Alli had been pulled down.
City threatened through two Sergio Aguero efforts, one turned against the woodwork by Hugo Lloris, but the home side was well worth the three points to move within a point of the leader in the standings after seven games.
It was Guardiola's first defeat in 12 games as City manager and followed a midweek 3-3 draw at Celtic in the Champions League.
"They (Tottenham) were better," said Guardiola. "We were not in the right positions, so congratulations to them."
City's arch rival Manchester United also had a frustrating afternoon, held 1-1 at home by lowly Stoke.
Substitute Anthony Martial looked to have given Jose Mourinho's team victory with a 69th-minute goal, but a mistake by home goalkeeper David de Gea allowed Joe Allen to equalize.
Elsewhere, Arsenal grabbed a controversial injury time winner at Burnley with Laurent Koscielny appearing to score the only goal of the game via his elbow and with appeals for offside.
The Gunners move up to third with the victory, but reigning champion Leicester is languishing in mid table after a goalless draw at home to Southampton.
Barcelona stunned at Celta Vigo
In La Liga, there was a stunning upset at Celta Vigo, which beat defending champion Barcelona 4-3 in a pulsating match.
Celta was three up at the break and weathered a late Barca fightback to seal the points, leaving the Catalans in fourth in the standings, two points adrift of leader Atletico Madrid, which won 2-0 at Valencia.
Earlier, it proved another frustrating afternoon for European champion Real Madrid, held 1-1 at home by Eibar to drop points for the fourth straight game.
Gareth Bale scored his 50th league goal for Los Blancos to equalize a sixth minute goal by Fran Rico for the visitor.
He later hit the post with an effort in the second half but coach Zinedine Zidane was furious at another slip up, which saw city rival Atletico go above his team on goal difference at the top.
"We have to train with greater intensity, starting with me, I am the coach," Zidane said in comments reported by AFP.
"Now there is an international break and when the players return we have to change because we can't continue like this.
"We always react (in the second-half), but we need to not react and instead act from the start."
Balotelli high and low
In France, Mario Balotelli proved the hero then villain for his new club Nice in the game against Lorient.
The striker cropped up to score a brilliant 87th minute winner in the 2-1 victory, taking his shirt off in celebration to earn his first yellow card.
A later scuffle with Lorient's Steve Moreira led to a second yellow and his marching orders.
It was Balotelli's sixth goal in five games for Nice since leaving Liverpool on a free transfer and leaves the South of France team at the top of Ligue 1.