Premiership round-up: Chelsea moved to within six points of Manchester United thanks to Frank Lampard's 20th goal of the season.
He sent Manchester City goalkeeper Andreas Isaksson the wrong way from the spot in the 28th minute after Micah Richards had been punished for tripping Salomon Kalou.
Lampard in the process prolonged City manager Stuart Pearce's misery - this was his side's fifth successive league defeat.
Arsenal put their treble cup heartbreak behind them to climb into the top three with a fortuitous goal from Abou Diaby sinking Martin O'Neill's side.
Diaby, whose only other goal for the Gunners was against Villa at Highbury last season, inadvertently deflected a mishit shot from Julio Baptista past Thomas Sorensen after 10 minutes.
It enabled the visitors to move ahead of Liverpool in the battle to claim a Champions League spot.
Arsenal had been beaten in the Carling Cup final and then crashed out of the FA Cup and Champions League in the space of 11 dismal days.
But if they could have hand-picked a fixture in which to bounce back the treble blow then it would have been Villa and they are now unbeaten in 17 matches with the midlands club.
Arsenal, lacking four players through suspension plus the injured Thierry Henry, were not at their free-flowing best.
But they still would have won more comfortably and Jeremie Aliadiere could have finished with a hat-trick had he shown more clinical finishing.
Cesc Fabregas impressed in the centre of midfield for the Gunners, who are now two points in front of Liverpool and with a game in hand.
Villa's main threat came from John Carew - whose goals had twice eliminated the Gunners from the Champions League when with Valencia - although captain Gareth Barry also impressed.