Villa drew a blank at Upton Park but at least they left the East End with a point which might easily have been three.
Although clear-cut chances were few and far between, Christian Benteke was twice desperately close to breaking the deadlock of a largely sterile encounter.
The Belgium international hit the bar with a 71st-minute header, while his 89th-minute shot was tipped away by Jussi Jaaskelainen.
With Gabby Agbonlahor, Fabian Delph and Antonio Luna all out, manager Paul Lambert had to reshuffle his line-up.
But Ron Vlaar, Nathan Baker and Ciaran Clark proved to be a resolute back three in front of Brad Guzan, who dealt competently with anything the Hammers could throw at him.
A neat exchange between Andi Weimann and Benteke created space for Karim El Ahmadi to attempt a shot from 25 yards, only for Mark Noble's blocking challenge to send the ball flying out for a throw-in.
A couple of minutes later, Weimann burst powerfully through the middle, shrugging off James Tomkins' challenge before Jaaskelainen raced out to save at the striker's feet.
The home side's response was a dangerous low cross from Matt Jarvis which Kevin Nolan scuffed wide under pressure from Clark before former Villa winger Stewart Downing unleashed a fierce 20-yard drive which Guzan did well to held.
In the 16th minute Weimann was impeded by Ravel Morrison as he raced clear through the middle but referee Howard Webb declined to award a free-kick which would have inevitably meant him having to send off the West Ham player.
Guzan did well again when he charged down an angled drive from Jarvis before Jack Collison fired into the side netting following a quickly-taken free-kick.
After Weimann's 30-yard effort had gone just wide in the 22nd minute, there was little real threat at either end for the remainder of the opening period, although Clark did well to head away Downing's powerful free-kick for a corner.
Both sides opened the second half in more promising mood, Benteke just failing to make contact with Matt Lowton's high cross from the right, while Baker did well to block Morrison's drive with a timely challenge on the edge of the penalty area.
Villa were forced to make a substitution on 57 minutes, Libor Kozak replacing Weimann, who had taken a painful blow to his foot, and almost immediately the Hammers were close to scoring, Morrison volleying just too high from 20 yards after the visitors had cleared a Noble corner.
The Hammers had been playing without a recognised striker but in the 62nd minute they introduced former Villa loanee Carlton Cole for Collison, with Joe Cole taking over from Jarvis.
The visitors should have been ahead in the 71st minute.
A sparkling four-man move - undoubtedly the best of the game - ended with Lowton crossing perfectly from the right and Benteke climbed above Tomkins for firm header which beat Jaaskelainen but struck the underside of the bar.
That near miss drew a prompt response from the Londoners, who swept straight to the other end, where Downing's clever reverse pass set up Nolan for a low shot which went just wide of the near post.
Villa were now enjoying their best spell of the game, although Guzan had to be alert when Joe Cole created space for a left-foot shot.
Benteke was again close to breaking the deadlock in the 89th minute.
The Belgian striker controlled Vlaar's lofted pass before hitting a low angled left-foot shot which Jaaskelainen tipped away for a corner at full stretch.
But in stoppage time the visitors were grateful to Guzan when he parried Joe Cole's right-foot effort.
West Ham: Jaaskelainen; Demel, Tomkins, Reid, Rat (Diame 90); Downing, Noble, Collison (C Cole 62), Nolan, Jarvis (J Cole 62); Morrison. Unused subs: Adrian, Maiga, O'Brien,Potts.
Villa: Guzan; Vlaar, Baker, Clark; Lowton, Sylla, Westwood, El Ahmadi, Bacuna; Weimann (Kozak 57), Benteke. Unused subs: Steer, Helenius, Herd, Bowery, Tonev, Johnson.