The pressure on Moyes increased when Ashley Westwood opened the scoring with a fine free-kick after just 13 minutes, but Wayne Rooney quickly drew United level.
Rooney then put United in front with a penalty at the end of the first half and Juan Mata scored his first goal for the club on 57 minutes.
Javier Hernandez added a late fourth to seal an important win and boost confidence after the Manchester derby defeat.
The build-up to the match had been dominated by talk of the planned protest and a plane carrying the message ‘Wrong One – Moyes Out’ flew over Old Trafford shortly after kick-off, although the fans inside the stadium showed their support by clapping the beleaguered manager as he took his place in the dugout.
While Moyes may have been buoyed by the reception from supporters at kick-off, his mood only deteriorated in the 13th minute when Rafael fouled Gabriel Agbonlahor just outside the box and Westwood curled an exquisite free-kick past a disappointing defensive wall and beyond the reach of David de Gea.
Alexander Buttner joined Rafael on a yellow card after a challenge on Marc Albrighton and Ciaran Clark had a chance to make it 2-0 from Westwood’s free-kick, but he directed his free header over the bar.
United were finally stung into action and, moments after Ashley Young threatened with a low cross, Rooney equalised in the 20th minute.
Shinji Kagawa, one of five changes from the side that lost to Manchester City, delivered a precise cross and Rooney barely had to move as he glanced a header into the bottom corner to relieve the tension.
Clark slid in to make a good block moments later as Rooney shot powerfully from 20 yards, and apart from the occasional Villa break it was the hosts who continued to make the running.
Kagawa produced a number of clever touches in a lively performance, and it was a pass from the midfielder which led to United being given a penalty on the stroke of half-time when Mata was fouled by Leandro Bacuna, allowing Rooney to step up and stroke a classy penalty deep into the corner.
Michael Carrick came on for Rafael at half-time to line up as a makeshift centre-back, with Phil Jones moving over to the right, and United’s defence was almost caught out in the 48th minute when Christian Benteke took down a long ball on his chest but missed his kick with just the keeper to beat.
Benteke tried to make amends as he leapt highest in the area to meet an Albrighton cross but headed over, and United weathered the brief storm to extend their lead in the 57th minute.
It was a scrappy goal as the ball ricocheted around in the area and Villa failed to clear after an aggressive run from Marouane Fellaini, but Mata kept his cool to fire into the bottom corner from 12 yards and open his account for United.
The presence of Benteke continued to cause problems for United at the back and he had an appeal for a penalty waved away when he went down under a clumsy-looking challenge from Nemanja Vidic.
Rooney carved out a chance to complete his hat-trick with a sublime piece of control to cut back inside his defender, but Brad Guzan made a smart save.
Rooney was withdrawn to warm applause as Moyes kept half an eye on the upcoming Champions League tie against Bayern Munich, but United still had work to do as Villa kept fighting in an effort to get back into the game.
Ryan Bertrand played a clever ball over the top for Benteke to chase but he could not quite connect well enough as he stretched out a leg, while Aleksandar Tonev and Clark shot wide with ambitious attempts from distance.
There was still time for Hernandez to put the icing on the cake for United, as he supplied a simple finish at the back post in the 90th minute after a great run and cross by fellow substitute Adnan Januzaj.