Bruno Fernandes scored his 100th career 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.