Bruno Fernandes scored his 100th career league goal to boost Manchester United’s Champions League hopes and end Aston Villa’s 10-match unbeaten run.
Fernandes pounced six minutes before half-time after Emiliano Martinez had turned Marcus Rashford’s shot into his path.
It sealed a deserved victory for the hosts, who had already gone close through Marcel Sabitzer.
United midfielder Casemiro also hit the bar and curled a second-half effort just wide.
However, Ezri Konza nearly scrambled a close-range equaliser from a late corner that had been flicked on at the near post, but the Villa defender was unable to adjust his body position quickly enough to steer the ball goalwards and United were able to clear.
The result ensures United have a healthy advantage on the clubs chasing a top-four spot, with Villa now nine points adrift of the Red Devils having missed the chance to cut the gap to just three points.
It is difficult to understate Fernandes’ importance to United.
The Portuguese playmaker’s arrival from Sporting Lisbon in 2020 helped rescue a campaign that was going nowhere and ensured United finished third.
Since then, he has carried so much of his side’s attacking threat, remaining consistent throughout a club career that now extends to 178 games.
Even in this game, he annoyed Villa fans – and some of his own – by going to ground too easily or complaining for non-existent fouls. However, his willingness to play through pain is admirable.
Anyone who saw him limping away from a first-half collision in the FA Cup semi-final with Brighton was surprised he remained on the pitch into extra-time.
That he should start two Premier League games in the week after that says much for the 28-year-old’s resolve.
Fernandes’ 11th goal of the season underlined his desire.
He anticipated the ball could run loose as soon as Rashford went for goal – and when Martinez pushed it straight to the area Fernandes was running into, he was quicker to react than Alex Moreno and finished from an acute angle.
Villa have rare off-day
The defeat is a blow to Villa’s European aspirations, although given their final three opponents of the campaign are Tottenham, Liverpool and Brighton they remain very much in charge of their own destiny.
However, to even be talking in those terms is testament to the impact Unai Emery has had since his arrival at the club in November.
This was one of those rare days in recent times when Emery’s side failed to generate pressure around their opponents’ box or build up any decent momentum.
One second-half effort from Jacob Ramsey was on target when it was blocked by Victor Lindelof, although whether it would have tested David de Gea is another matter.
John McGinn had a speculative effort from the edge of the area shortly afterwards which rolled harmlessly wide.
The visitors had a couple of scrambles around the home box in the latter stages without threatening to breach De Gea’s defences, although after eight wins and two draws they can be excused one off-day.
Fans began to gather in the city centre three hours before kick-off and while the overwhelming majority were in their seats by kick-off, hundreds continue to protest outside the directors’ box, forcing United to close various entrances for security reasons.
Derby defender Curtis Davies was among those caught up in the protests, meaning he was delayed getting to his BBC Radio Five commentary position.
Friday evening marked the deadline for bids to buy United, amid suggestions co-chairmen Joel and Avram Glazer may choose to remain at the club in some capacity.