Bertrand Traore pulled a goal back for the hosts but Leicester edged three points clear of United and have lost just once in their last 12 league games.
While leaders Manchester City remain untroubled at the top, the Foxes look increasingly likely to return to the Champions League for the first time in four years after their heart-breaking final-day miss last season.
Villa were punished for an awful first half and without Jack Grealish, missing with a shin problem, lacked the quality, initiative and drive to recover.
Their problems ran deeper than their absent skipper, though, with Ross Barkley again underwhelming, and Dean Smith’s side have now won just three of their last 10 top-flight games to further dent their European hopes.
Aside from brief spells in the second half, Villa never got going and Leicester quickly took advantage with Ricardo Pereira’s tame effort collected by Emi Martinez after 33 seconds.
The only minor scare the Foxes faced came when Luke Thomas and Youri Tielemans blocked Traore’s path after Anwar El Ghazi latched on to Ollie Watkins’ cute flick.
Villa’s threat failed to materialise and the Foxes took complete control with two goals in four minutes.
Tielemans’ searching pass for Jamie Vardy was half cleared to Barnes and he found Maddison.
The midfielder, on the edge of the box, still had plenty to do but found the bottom corner via the post to give his side a 19th-minute lead.
It was a deserved opener and the visitors’ afternoon got better when Barnes smashed in from close range after Martinez parried Vardy’s effort.
Villa had no answer and were dangerously overrun in midfield, with Barnes again impressing in front of England boss Gareth Southgate.
The winger’s ninth Premier League goal of the season moved him ahead of Marcus Rashford and Raheem Sterling, leaving it almost impossible for Southgate to ignore him ahead of Euro 2020.
From a Villa perspective, Leicester were worryingly comfortable, but Smith gave his side the chance to redeem themselves and they rewarded him by pulling a goal back three minutes after the break.
The Foxes failed to deal with Matt Targett’s low cross and Traore was left unmarked to thump past Kasper Schmeichel from close range.
But Leicester remained unflustered and Maddison tested Martinez with a free-kick before being forced off with an ankle problem and replaced by Nampalys Mendy after 64 minutes.
Vardy dragged wide as the game ambled to a conclusion and Villa tried to find the momentum to earn a point.
Trezeguet’s weak effort rolled to Schmeichel as Leicester’s resolve held firm through five minutes of stoppage time to continue their top-four charge
Additional reporting by PA.