Villa had been leading through goals by John Carew and Gabriel Agbonlahor, with Cristiano Ronaldo adding an 80th-minute equaliser to his first-half opener.
Burly former Lazio schoolboy Macheda was introduced on the hour mark for the disappointing Nani and was only in the squad because United were missing seven first-team players through injury and suspension.
Rio Ferdinand, Dimitar Berbatov, Fabio Da Silva and Wes Brown are all out for varying time frames while Nemanja Vidic, Paul Scholes and Wayne Rooney were serving bans for recent red cards.
The net effect was that United’s defence looked shaky and a bench filled with teenagers could barely inspire confidence when Sir Alex Ferguson’s side went behind.
Villa started brightly and they went close through a Carew header cleared off the line by Darren Fletcher on five minutes.
Agbonlahor was getting the better of Gary Neville as United looked unsure at the back without Ferdinand and Vidic.
But the hosts took the lead after a moment of madness saw James Milner touch the ball back to Brad Friedel with the American keeper already diving on to the ball.
It was a clear backpass inside the area and, after Milner was booked for encroachment, Ryan Giggs touched the indirect free-kick to Ronaldo, who smashed the ball across the face of goal and into the top right corner for 1-0 on 14 minutes.
United could have gone two up straight from kick off when a long ball played Giggs through, but Carlos Cuellar got back to block his finish.
Villa recovered from the shock of going behind and Ashley Young forced a smart stop from Edwin van der Sar with a free-kick on the edge of the United area.
They levelled on 29 minutes thanks to the endeavour and skill of Gareth Barry, who won a 50-50 ball on the right, nutmegged Patrice Evra and swung a perfect cross for 6’5″ Norwegian Carew to divert a downward header into the left corner of the United goal.
Ronaldo was guilty of a glaring miss five minutes later when he sent a free header straight at Friedel, but it would have been harsh on Villa to trail at the break as, despite United having better possession, the visitors created more clear-cut chances.
The second half started in subdued fashion, with United looking nervous and uninspired while Villa were happy to sit back and use the counter attack.
It paid off for Martin O’Neill’s men when, after Ronaldo gave the ball to Stiliyan Petrov in Villa’s half, they countered down the left.
Neville stood back as Carew moved towards the area and the former Valencia striker duly picked out a cross that Agbonlahor rose to head past the stranded Van der Sar.
United’s problems with injury and suspension were highlighted by the introduction of Macheda for anonymous Portugal winger Nani.
Jonny Evans headed a Giggs corner just over but United lacked a creative spark or inspirational figure to drive them on until Ronaldo came up big again.
After a short spell camped on the edge of the Villa box, the ball broke to the Portuguese international who took a touch before drilling a low left-foot shot through the legs of Petrov and past the unsighted Friedel into the bottom right.
Ronaldo’s leveller heralded a final push by United that saw sub Danny Welbeck force a reflex stop from Friedel after he killed Ronaldo’s cross with a good first touch.
The visitors looked like they were holding on for a point until Macheda’s late moment of brilliance.
With his side camped on the edge of the Villa box, the reserve-team striker had his back to goal on the left-hand side of the box but left Luke Young trailing with an impudent flick that created the space for a right-foot curler that left Friedel no chance.
United’s win puts them one point clear of Liverpool with a game in hand.
Villa, meanwhile, stay fifth but are only one point ahead of Everton, who thrashed Wigan 4-0 earlier in the day.
Tags: Football, league, Match, Reviews, Soccer

