The second-half introduction of Leon Osman swung the game in the Toffees' favour, with the England man assisting the opener and grabbing the second himself in front of the watching Roy Hodgson.
Villa will feel that they should have been out of sight by the time the deadlock was broken, with Tim Howard producing a string of impressive saves in the opening 45 minutes.
The best of the lot came with just eight minutes on the clock, with the American goalkeeper springing to his right to touch a Christian Benteke penalty over the top after Seamus Coleman had tripped the powerful Belgian striker inside the box.
The hosts keep pushing after the interval, but fell behind on 68 minutes when Osman teed up Lukaku to drill first time into the bottom corner past a hopelessly exposed Brad Guzan.
Osman then doubled Everton's lead nine minutes from time, with a well-worked corner routine allowing him to be picked out on the edge of the box by Gareth Barry and stroke into the back of the net.
Everton took just 30 seconds to create their first opportunity, Kevin Mirallas whipping a cross towards Lukaku who fired wide under pressure from Ron Vlaar.
At the other end Benteke gave the ball away with his first two touches only to earn a golden chance to mark his return from the spot.
A chip into the area from Andreas Weimann had given Benteke a run on goal and he was only stopped when Coleman clipped his heels in pursuit.
Benteke's spot-kick was powerful enough but Howard guessed right and then thrust a glove up for a sensational save.
Villa then conspired to miss two glorious chances in the space of as many minutes.
Benteke was on the end of the first, played in this time by Aleksandar Tonev's clever touch in the 23rd minute. He waited for the ball to drop and again found Howard's reactions too good as he shot across goal from 10 yards. Yet Leandro Bacuna, arriving at the far post, was begging for the pass.
Weimann spurned an even better chance moments later, a mysteriously absent offside flag giving him space and time to run at Howard. But he somehow got the ball caught under feet and the keeper made a sliding tackle.
If Villa could have been three up, Everton were soon making gilt-edged chances of their own.
Guzan matched Howard's effort with a fine save from Lukaku after he got a strong header on Coleman's cross and Ross Barkley was inches away from the opener when a deflected effort from 25 yards looped over the keeper and on to the crossbar.
The breakneck speed slowed somewhat but a 0-0 scoreline at the break hardly seemed believable.
A most unlikely stalemate seemed to be in the offing until Lukaku struck.
Leighton Baines broke down the left wing before playing the ball infield for Osman. He spotted Lukaku arriving in the area and the striker swept home Osman's pass with a clinical left-footed effort.
His celebrations had barely subsided when he was appealing for a penalty against Vlaar. The Dutchman's hand did make contact with the ball but there was no obvious intent.
With 15 minutes left, the quiet Gabriel Agbonlahor shot straight at Howard from a wonderful position eight yards out.
Villa's hopes died in the 81st minute when Barry held the ball up deep in the penalty area before cutting back for Osman.
He addressed the ball cleanly and slotted a low shot inside Guzan's post to secure the points.