Mario Ballotelli scored an injury-time penalty to see City home 3-2 last season and the Premier League champions did it again as Dzeko hooked home from David Silva's pass two minutes from time.
This time around, Steven Caulker headed us into the lead in the 21st minute but Sergio Aguero's equaliser on 65 minutes and then Dzeko left our considerable efforts without reward.
Andre Villas-Boas made five changes from Thursday night's 3-1 win against NK Maribor in the Europa League.
Emmanuel Adebayor came in for his first Premier League start of the campaign, Caulker and William Gallas joined forces again in central defence, Sandro returned in midfield and Clint Dempsey took the central slot in the forward midfield three in our 4-2-3-1 system.
The first half pretty much went to plan as City were kept at bay and we then got ourselves in front.
Aleksandar Kolarov had the first effort of note with a free-kick that Friedel easily dealt with in the 14th minute and we were soon in front.
Tom Huddlestone curled in a free-kick from the right touchline and Caulker powered his header into the ground and up past Joe Hart, who couldn't keep it out.
This was our best spell as Adebayor's run and backheel set-up Huddlestone to fizz a shot inches wide from 20 yards and Gareth Bale floated a header wide on the stretch from Jan Vertonghen's cross.
City had shouts for penalties either side of that spell and David Silva, Aguero and Carlos Tevez were starting their range as the half closed. Aguero fed Kolarov, who curled wide, before blasting wide himself from 16 yards on 41 minutes.
The best chance arrived for Tevez just before half-time as Ya Ya Toure released Silva and he rolled into Tevez, who could only side-foot at Friedel from a central position.
We continued to contain City at the start of the second half. Toure's long pass would have sent Aguero clean through but the striker failed to control and on the hour Maicon, just off the bench, played in Toure who fired into the side-netting.
There was a touch of fortune in the build-up to City's equaliser on 65 minutes. Walker spotted the danger centrally as Toure looked to get onto Silva's pass but as he met Toure, the ball went straight to Aguero on the right side of the box. Aguero checked onto his left foot and curled into the far corner.
Maicon and Tevez zipped crosses dangerously across the six-yard box and Dzeko entered the fray for Tevez with 72 minutes on the clock.
Bale forced Hart into a reaction save a minute later but the home side were forcing us back now as Michael Dawson replaced Walker, who looked to be limping.
Dzeko glanced a header just wide from Aguero's corner, Silva somehow found space in a crowded box to curl just wide and Friedel blocked well from Aguero.
The pressure finally told with two minutes remaining. Silva conjured a flicked pass over the defence and Dzeko was there to hook a volley home from eight yards.
City (4-4-2): Hart; Zabaleta, Kompany, Nastasic (Maicon, 57), Clichy; Silva, Y Toure, Barry, Kolarov; Aguero (Garcia, 90+1), Tevez (Dzeko, 73). Unused subs: Pantilimon, K Toure, Sinclair, Razak.
Spurs (4-2-3-1): Friedel; Walker (Dawson, 78), Caulker, Gallas, Vertonghen; Huddlestone, Sandro; Lennon (Naughton, 87), Dempsey, Bale; Adebayor (Defoe, 80). Unused subs: Lloris, Carroll, Livermore, Sigurdsson.
Yellow cards: Spurs - Walker (27), Adebayor (76).
Goals: City - Aguero (65), Dzeko (88). Spurs - Caulker (21).
Referee: Mr M Oliver.