This absorbing contest represented Villa's first-ever Champions League home match and their first encounter with Bayern since beating the German giants 1-0 in the 1982 European Cup final.
With Bayern playing with a high defensive line, Villa intended to play direct and pump the ball forward to Ollie Watkins to run in behind, and the England international's pace a strength caused havoc for Dayot Upamecano throughout a tight first half.
Upamecano was booked midway through the first half for bringing down Watkins on the break and Villa thought they had scored from the resulting free kick when Pau Torres poked a composed finish into the far corner, but Jacob Ramsey - who was later withdrawn due to injury - was caught offside in the build-up.
Bayern enjoyed positive spells of possession during the second half, but Aston Villa's resolute backline defended brilliantly to limit the Bundesliga giants in terms of clear-cut chances, and it was the hosts who ultimately had the clinical edge in front of goal courtesy of their super sub Duran.
The 20-year-old Colombian was only on the pitch for nine minutes as he burst forward to meet a delightful long ball from Torres before lobbing Manuel Neuer from around 30 yards to spark pandemonium at Villa Park.
Emiliano Martinez made two gigantic saves to deny Serge Gnabry and Harry Kane in stoppage time, and Unai Emery's men held on to claim a historic Champions League triumph, inflicting the first defeat on Bayern boss Vincent Kompany since taking the reins in the summer.
ASTON VILLA VS. BAYERN MUNICH HIGHLIGHTS
Pau Torres goal disallowed vs. Bayern Munich (22nd min, Aston Villa 0-0 Bayern Munich)
Aston Villa thought they had taken the lead from a set piece. Bayern failed to clear their lines when the ball was pumped into the box and it eventually fell to Pau Torres, who took one touch before poking a composed finish from a tight angle across goal and into the bottom corner. However, the goal was disallowed for an offside against Jacob Ramsey in the build-up.
Jhon Duran goal vs. Bayern Munich (79 min, Aston Villa 1-0 Bayern Munich)
It is that man again! Duran was brought on for Ollie Watkins in the 70h minute and just nine minutes later, he ran onto a superb up-field pass from Pau Torres before hooking a magnificent first-time shot over the outrushing Manuel Neuer from about 30 yards.
MAN OF THE MATCH - EMILIANO MARTINEZ
Each member of Aston Villa's back four, including Torres who assisted the match-winner for Duran with a delightful ball in behind Bayern's defence, deserve plenty of plaudits for their defensive performances against Bayern, but Villa may not have collected maximum points without the heroic interventions of goalkeeper Emiliano Martinez.
The Argentine made a stunning save to deny Michael Olise from distance in the first half, and he went on to make two huge stops in added-on time, keeping out a close-range effort from Gnabry and a powerful header from Kane to ensure Villa held on for a memorable win.
ASTON VILLA VS. BAYERN MUNICH MATCH STATS
Possession: Aston Villa 30%-70% Bayern Munich
Shots: Aston Villa 5-17 Bayern Munich
Shots on target: Aston Villa 2-7 Bayern Munich
Corners: Aston Villa 1-11 Bayern Munich
Fouls: Aston Villa 8-12 Bayern Munich
BEST STATS
WHAT NEXT?
Aston Villa will now turn their attention to another blockbuster home encounter against Manchester United in the Premier League on Sunday.
As for Bayern Munich, they are also in action on Sunday and will be on the road again for their next match as they travel to Eintracht Frankfurt in the Bundesliga.