Christian Benteke's welcome return to action failed to prevent Villa from a second home defeat at the hands of Tottenham in less than a month.
The Londoners followed up their Capital One Cup victory at Villa Park by claiming three Barclays Premier League points at the expense of Paul Lambert's side.
England's new hero Andros Townsend opened the scoring in the 31st minute, and Villa generally found the going tough until Benteke's introduction just past the hour mark as a sub for Libor Kozak.
Suddenly there was hope of an equaliser, Benteke heading only just over a few minutes after going on.
But a second goal from Spanish striker Roberto Soldado in the 69th minute killed off Villa's hopes.
A heavy downpour before kick-off left the playing surface greasy, with both sides struggling to settle into any sort of pattern during the opening exchanges.
Leandro Bacuna's early cross briefly had the visitors in trouble, Gabby Agbonlahor firing over with a shot on the turn, although it was the 17th minute before we witnessed the first shot on target, Brad Guzan doing well to stop Sandro's skidding low drive from 20 yards.
Guzan's opposite number Hugo Lloris did equally well when he did well to push away Ashley Westwood's wickedly curling 21st minute free-kick after everyone else in a crowded goalmouth had been unable to make contact.
A similar free-kick from Lewis Holtby at the end sneaked just past the far post before Villa responded with an angled Andi Weimann volley which flashed wide.
After just over half an hour of stalemate, though, Tottenham were in front.
Villa defenders appeared to have contained the danger when the visitors were forced to play the ball out to Townsend on the right.
Even when the England international curled a left-foot shot towards goalwards, there appeared to be no real threat.
But the ball evaded everyone and sneaked inside the far post as Guzan dived in vain.
Townsend then had a shot blocked by Nathan Baker and Gylfi Sigurdsson sent a header just wide before Bacuna sent a 20-yard free-kick just over for Villa.
Three minutes before the break, the home side were close to an equaliser following the best move so far.
Fabian Delph's astute pass set up Antonio Luna for a left-wing cross which flew across the goalmouth before Westwood played it back inside from the other flank for Weimann to fire narrowly wide of the left-hand post.
If Villa deserved better with that one, though, they were grateful to Guzan as he dived to his right to tip away a low Townsend drive for a corner.
The keeper made another excellent save just after half-time, this time tipping away Paulinho's well-struck right-footer, while Ron Vlaar did well to clear from in front of goal after Townsend's forceful run and menacing low cross.
With the home side struggling to make much impression, Benteke was sent on as a 61st-minute sub for Kozak - and within three minutes the Belgian was close to an equaliser.
Weimann played the ball wide to Bacuna, and Benteke met the right-back fine centre with a header which was only just too high.
Then he was just unable to make a decent contact after Agbonlahor's burst of speed and inviting cross.
But just when Lambert's men seemed to be on the brink of an equaliser, they were stunned by a second Spurs goal on 69 minutes.
The visitors worked the ball in from the left and Soldado moved on to Paulinho's precise pass to lift his shot over Guzan from 12 yards.
Townsend then sent an angled drive only inches over but Villa kept plugging away and in the final 10 minutes sub Aleksandar Tonev fired across the face of goal before seeing a low shot held by Lloris.
Weimann was also close in stoppage time with a shot that was blocked - and was then denied a penalty when he was impeded by Vlad Chiriches in the area.
Villa: Guzan; Bacuna, Vlaar, Baker, Luna; El Ahmadi (Sylla 72), Westwood, Delph; Weimann, Kozak (Benteke 61), Agbonlahor (Tonev 79). Unused subs: Steer, Helenius, Bowery, Lowton.
Tottenham: Lloris; Walker, Dawson, Chririches, Vertonghen; Sandro; Townsend, Paulinho, Holtby (Dembele 60), Sigurdsson (Lennon 60); Soldado (Defoe 87). Unused subs: Friedel, Lamela, Naughton, Erikson.