Aiden McGgeady hit the post with a curling effort early on but Everton then laboured for much of the first half, conceding the opener when a slip by Ross Barkley allowed Christian Benteke to play in Lacuna Bacuna, who fired low through Tim Howard's legs.
Everton spent the second half encamped in Villa's half, but the visitors packed men behind the ball and left the Blues frustrated.
Relief then turned to ecstasy 10 minutes later when Kevin Mirallas curled home a wonderful free kick over the wall and into the corner to secure all three points.
A successful weekend was helped by Tottenham and Liverpool drawing and Manchester United losing, repairing at least some of the damage inflicted by their horror show across the park earlier in the week.
The result moves Everton up to fifth, two points behind Liverpool, four points ahead of United and just one ahead of Spurs - with a huge trip to White Hart Lane lying in wait next weekend.