Spurs went two up after quickfire goals shortly prior to half-time from Dejan Kulusevski’s finish after Ederson’s error and Emerson Royal’s close-range header.
But City responded immediately after half-time, with Julian Alvarez halving the deficit in the 51st minute, before Haaland nodded home for the equalizer two minutes later.
Riyad Mahrez coolly finished for 3-2 in the 63rd minute, before rounding out the points in stoppage-time.
But Guardiola blasted his own players after the game, suggesting they lack the desire to back up their recent successes.
“We concede four fouls and we don’t react,” Guardiola told Sky Sports.
“There was nothing from the stomach and the guts, we were lucky but if we don’t change sooner or later we’re going to drop points.
“The passion, fire, desire to win from minute one (was missing). It’s the same as our fans, they are silent for 45 minutes.
“They booed because we were losing but maybe it’s the same as our team maybe we’re so comfortable winning four Premier Leagues in five years. And after we score a goal they react, but that’s not the point.”
City remain five points behind leaders Arsenal who have a game in hand. Guardiola doubled down on his comments that the fire had gone out with his players.
“Definitely, otherwise we don’t concede the goals we concede every single game,” he said.
“We give them. And today we were lucky, but the day after we will not be lucky. I want my fans back, my fans here. Not my away fans, they’re the best.”