Barnes had given the Foxes the lead on 40 minutes after rounding Aston Villa goalkeeper Pepe Reina, who had charged out of his penalty area, and slotting home.
Vardy scored his first goal in 644 minutes when he converted a 63rd-minute penalty, soon after coming on as a substitute, to double the lead.
He added his league-leading 19th goal of the season and his 99th in the competition with a fierce low shot on 79 minutes.
Barnes made it 4-0 when he converted Marc Albrighton’s pass, as Leicester moved five points clear of fourth-placed Chelsea, as they stay in third position on 53 points.
Villa remain second bottom – two points adrift of 17th-placed Watford with a match in hand.
Leicester: 14 Mar v Watford (A)
Aston Villa: 14 Mar v Chelsea (H)