It was a tale of two Belgians as Villa slipped to defeat in English football's most-played fixture.
Christian Benteke had an eighth-minute penalty saved by Everton keeper Tim Howard - and Paul Lambert's side paid the price for a couple of other missed chances when Romelu Lukaku fired the visitors into a 68th-minute lead.
And just as the home side were threatening an equaliser, their hopes were killed off by a second Everton goal from sub Leon Osman six minutes from the end.
Villa were ultimately left rueing Howard's saves from Benteke, Andi Weimann and Gabby Agbonlahor, although Brad Guzan also did well to twice deny Lukaku before the deadlock was broken.
The home side were grateful for Antonio Luna's determination in the fifth minute, the Spanish left-back twice charging down shots from Kevin Mirallas after Gareth Barry's long pass had picked out the Belgian midfielder.
Three minutes later, Villa should have been ahead.
Moving on to Weimann's through ball, Benteke was tripped by Seamus Coleman and referee Anthony Taylor immediately pointed to the spot.
Benteke struck his spot kick well but as Howard dived to his right, the keeper managed to divert the ball over the bar with his trailing left hand.
The home side refused to be disheartened, though, and after Leandro Bacuna's drive had deflected behind off Leighton Baines, a delightful link-up between Agbonlahor and Aleksandar Tonev left Benteke clear.
Once again, though, the Belgium international was denied, his angled shot being tipped away by Howard.
Then Weimann found himself in a good position, with Everton appealing strongly for offside, only for the Austrian to have his first effort saved by Howard and his follow-up shot blocked.
Everton responded with four chances in the space of eight minutes.
Guzan did brilliantly to push aside Lukaku's powerful header before Ross Barkley unleashed a tremendous shot which struck Ashley Westwood and looped against the bar.
Guzan also did well to save with his feet after Lukaku had darted past Luna and Ron Vlaar, while Nathan Baker did well to divert a low Kevin Mirallas shot for a corner.
In first half stoppage time, Ciaran Clark went on as a sub for Luna, who appeared to pull a hamstring as he stretched to get the ball back to Guzan.
Clark slotted into the centre of defence, with Nathan Baker moving to left-back.
Lukaku and Barkley were both off target for Everton in the opening minutes of the second half, but in between those attempts, Westwood's lofted pass was only just too far in front of Benteke.
The Villa striker then had a left-footer blocked away for a corner by Phil Jagielka, who also got in the way of a Fabian Delph cross shot before Weimann sent a dipping drive only narrowly beyond the far post.
Westwood was in the wars when he took a nasty whack from James McCarthy, who was booked for the challenge.
The Villa midfielder was off the pitch for a few minutes but returned after receiving treatment.
But it was Everton who opened the scoring following a swift counter attack down the left.
Sub Osman slipped the ball inside the Lukaku and the Belgian striker stroked a low shot inside the near post from the edge of the penalty area.
There were strong Everton appeals for a penalty when Vlaar appeared to handle as he cleared from Lukaku a couple of minutes later.
But as Villa went in search of an equaliser, Weimann fired too high and then set up Agbonlahor for a shot which carried plenty of power but was straight at Howard.
Just when an equaliser looked likely, though, the visitors pounced again, Osman drilling a low shot into the bottom corner after Barry had played the ball across the area.
Villa: Guzan; Bacuna, Vlaar, Baker, Luna (Clark 45); Tonev (Helenius 76), Westwood, Delph; Weimann, Benteke, Agbonlahor. Unused subs: Steer, El Ahmadi, Sylla, Kozak, Lowton.
Everton: Howard; Coleman, Jagielka, Distin, Baines; Mirallas (Deulofeu 90),McCarthy, Barry, Pienaar (Naismith 80); Lukaku, Barkley (Osman 59). Unused subs: Robles, Jelavic, Oviedo, Stones.