Herrera’s low finish gave United the lead just before half-time after a dominant opening 45 minutes and Wayne Rooney’s superb strike 11 minutes from time doubled their lead.
But though Christian Benteke provided a scare when he pulled one back within a minute of Rooney’s volley, Herrera grabbed his second of the match to seal victory in stoppage-time.
It was a sixth Premier League win in succession for United and puts more pressure on City, who take on Crystal Palace on Monday Night Football before a huge Manchester derby clash with United next weekend – also live on Sky Sports.
United began in confident mood and had a huge penalty appeal turned down inside five minutes as Marouane Fellaini met a long ball over the top and played in Rooney, who went down under Ciaran Clark’s challenge. The defender looked to have an arm around the United man but referee Roger East waved away the appeals, much to Rooney’s frustration.
Undeterred, United continued to dominate possession although clear-cut chances were not regularly forthcoming until the 23rd minute, when Marcos Rojo’s 35-yard piledriver was turned over by Brad Guzan.
United’s pressure eventually paid off just as the home fans were starting to become frustrated. On 43 minutes Daley Blind’s low pass into the box was met by Herrera, who contolled with his right before firing past the Brad Guzan to give the hosts a deserved half-time lead.
It was a familiar pattern after the break as Villa continued to struggle to impose themselves on the game, Ashley Young missing a good chance to double United’s lead as he cut in from the left and curled a 20-yard effort inches wide of the far post.
Fellaini, who grew increasingly frustrated as the wide men regularly fell short with their delivery, then spurned a glorious chance, nodding a header into the ground which Guzan turned over the bar.
And it was not until the closing stages that the hosts finally breached the Villa defence once again. Substitute Angel Di Maria raced down the left and fired in a cross, which Rooney brought down with a sublime touch before swivelling and volleying a thunderous effort past Guzan.
It looked to be game over, but within 60 seconds Villa were back in it as Joe Cole’s low corner was met by Benteke, whose shot drew a rare mistake from David De Gea as it squirmed under the United goalkeeper to give Tim Sherwood’s men a lifeline.
But there to be no comeback, and two minutes into stoppage time United secured the points. Rooney was quicker to a drop-ball than Benteke and he set Juan Mata away down the right. The Spaniard pulled it back to the edge of the box for Herrera, who swept an excellent low finish into the bottom corner.
Charlie Nicholas’ verdict
“I think Manchester United made it difficult for themselves. Villa have good energy, they’re organised, but they never get their midfield players into a position to be a menace. Ashley Young was good today, Herrera as well, he enjoys playing with Mata.
“I thought Herrera was the star turn today. He’s very deliberate in what he does. I’m a big fan of midfield runners, who will stretch defenders and make them think. It creates space for the attack-minded players and he does that in a very calm way.”
Man Utd: De Gea (6), Valencia (6), Jones (7), Rojo (7), Blind (7), Carrick (6), Herrera (8), Mata (7), Fellaini (6), Young (7), Rooney (7).
Used subs: Di Maria (7), Falcao (5).
Aston Villa: Guzan (5), Hutton (7), Okore (6), Clark (7), Lowton (6), Delph (6), Sanchez (5), N’Zogbia (4), Weimann (5), Agbonlahor (5), Benteke (6).
Used subs: Bacuna (6), Cole (6), Baker (6).
Man of the match: Ander Herrera