The Hammers could not have asked for a better start as Robbie Keane met Thomas Hitzlsperger’s header to turn and fire the home side in front after just two minutes at Upton Park.
Villa goalkeeper Brad Friedel had to be alert to deal with a long-range effort from Gary O’Neil as the Hammers sought a second, and the visitors then created their first chance of the game as Ashley Young forced a save from Robert Green.
They thought they had levelled matters when Darren Bent headed home a Stewart Downing cross only to see the ‘goal’ ruled out for a push, but the England international would not be denied the equaliser and it came when he glanced home a header after good work from Emile Heskey and Luke Young.
Inspired by the goal Villa went on the offensive and Green was called into action to deny Bent before Carlton Cole cleared a James Collins header off the goal-line, and Ashley Young’s superb free-kick was kept out by an equally brilliant save from Green as the visitors ramped up the pressure.
Bent then wasted a glorious chance from a couple of yards out, but Villa did clinched three fully-deserved points in added time when Ashley Young crossed for Agbonlahor to head home.