Toure made Chelsea pay with a fine finish from inside the area and substitute Tevez made victory certain with a long-range effort late on.
The result reduced Manchester United's lead at the top of the table to 12 points but, perhaps more importantly with the title drifting away, increased City's advantage over third-placed Chelsea to seven.
Both managers had gone into the game under considerable pressure but City boss Roberto Mancini ended it far happier than Chelsea counterpart Rafael Benitez, who suffered more abuse from fans.
He was rewarded with a superb performance from Rodwell, who fully justified his inclusion as he attempts to ignite his City career after injury troubles.
He played a part in a positive start by City, which had its first shot within 40 seconds as Toure took aim from the edge of the area but Petr Cech saved easily.
City controlled possession with David Silva looking to pull the strings, Toure getting forward at every opportunity and Rodwell making several powerful runs.
It was some time before Chelsea threatened, but after initially being beaten, Kolo Toure recovered well to cut off Ba's counterattack.
Despite its early dominance, it was 15 minutes before City really tested Cech as Matija Nastasic went forward for a corner but the goalkeeper dealt with the Serbian's powerful header.
Rodwell had a shot blocked by Gary Cahill and Silva played in Aguero but the Argentinian overran the ball.
Lampard, looking to reach that double century by scoring for a fourth successive Premier League game, had his first sight of goal from a 30-yard free kick but blazed well over.
The game became scrappy as Chelsea tried to regain some control and Ramires was booked for a late challenge on Yaya Toure.
Rodwell then tested Cech twice in just over a minute, first forcing the keeper to tip over a powerful 25-yard drive and then heading into his arms from the resulting corner.
City went into the second half with the same determination but Aguero's acrobatic volley from Silva's cross went well wide.
The game's pivotal moment came in the 50th minute as City switched off at the back and Ba raced on to a long ball from deep.
Ba shrugged off Kolo Toure and clipped the ball past the out-rushing Hart but was brought down as he got tangled in the goalkeeper's legs.
Referee Andre Marriner immediately pointed to the spot but importantly felt Ba was just moving away from goal and did not show Hart a card.
Hart made the most of the reprieve to earn instant redemption by saving from Lampard, who had scored his last 10 spot kicks, low to his right.
He was in action again seconds later to deal with the resulting corner and City set about making sure Chelsea paid for missing its chance.
Surprisingly, Mancini opted to replace the influential Rodwell with Tevez but the resulting change in shape gave Chelsea more to think about.
The game opened up as Aguero raced through from a Milner pass and chipped just over before Ramires almost exposed Kolo Toure on the counter at the other end.
City made the decisive breakthrough just after the hour.
Milner found Silva in the box with a clever reverse pass and his pull-back found Yaya Toure on the edge of the area.
The Ivorian still had much to do but his first two touches took out two defenders and gave him space to curl a superb low finish beyond Cech and in at the far post.
The changes did not bear fruit and it was not long before Torres was introduced for Mikel.
But it was City's substitute Tevez who made the most dramatic impact, putting the game beyond the visitors with a superb strike from outside the area five minutes from time.