Substitute Andre Schurrle put visitors Chelsea ahead shortly after City’s Pablo Zabaleta was sent off for a second bookable offence.
Premier League leaders Chelsea looked set to pull off a fifth straight league win in as many games this season to move eight points clear of the champions.
But Lampard, on loan from New York City after ending his 12-year stint at Chelsea, turned in from James Milner’s cross five minutes from time — not long after coming off the bench.
The result left Chelsea three points clear of second-placed Southampton.
Much like their 1-0 win at Eastlands in February, Chelsea were prepared to soak up City’s pressure and hope they took their chance when it came.
And when Schurrle fired them ahead in the 71st minute, it was Chelsea’s first shot on target.
But Lampard, who was substituted at half-time in his first City appearance in the 2-2 draw at Arsenal last weekend, made a crucial contribution.
After losing to Bayern Munich in the Champions League in midweek, City were determined to make the early running, with Edin Dzeko planting a header wide of goal from Aleskandar Kolarov’s cross.
– Costa-Kompany battle –
David Silva also picked out Yaya Toure at the near post with a corner but the Ivorian’s header lacked the power to trouble Thibaut Courtois.
Much had been made in the build-up of the contest between Chelsea’s Spain striker Diego Costa and City captain Vincent Kompany.
Their first battle did not disappoint with central defender Kompany just managing to shrug off the forward and earn a free-kick in a memorable tussle.
Chelsea were content to let City have the ball and when Aleksandar Kolarov’s cross was blocked to the edge of the area, Fernandinho sliced wide from a good position.
Sergio Aguero drove over on the half-volley after Chelsea failed to clear Silva’s cross, but the hosts were being limited to half-chances.
Chelsea finally showed some threat when Cesc Fabregas clipped in a free-kick from the right.
Gary Cahill won the ball in the air and the visitors had sustained appeals for a penalty against Yaya Toure.
They also went close with another set-piece as Cahill again got his head to the ball but Fernandinho’s touch took the ball away from Costa, who was waiting to turn in at the far post.
City continued to dominate after the break and had a penalty appeal themselves, when Toure ran around Branislav Ivanovic and went down under the Serbian’s challenge in the area.
City debutant Eliaquim Mangala laid off for Fernandinho and the Brazilian midfielder thumped wide from the edge of the area.
Chelsea eventually struggled with the pressure and when Aguero’s shot was blocked by Courtois, Ramires pulled off a fine interception to deny Dzeko.
But Manuel Pellegrini’s side were reduced to 10 men midway through the second half when Zabaleta caught Costa and was shown a second yellow card.
Chelsea responded almost immediately and a flowing move saw them cut through the hosts’ defence before Costa fed the ball right for Hazard to cross for Schurrle to tap in at the far post.
The visitors began to look even more of a threat on the counter-attack and when Schurrle found Costa the striker’s low effort was deflected on to the post.
As City attempted to claw their way back, Silva drifted in from the right and his low effort flew just past Courtois’s post.
But just as Chelsea looked set to cruise to victory, Lampard got on the end of Milner’s cross to score his first City goal.
Lampard then came close to snatching the win when his low effort was blocked in the area by John Terry, before Didier Drogba thumped well over with a free-kick at the other end.