Dunn's coolly-taken spot-kick in the 89th minute helped Rovers climb out of the bottom three and brought to an end Villa's four-match winning run in the Premier League.
In fairness, it was the least Sam Allardyce's side deserved after they bounced back brilliantly following the second-half dismissal of midfielder Vince Grella.
Villa arrived at Ewood Park having made their best start to a season in a decade, and they wasted little time in asserting their authority, grabbing the opening goal inside three minutes.
A speculative ball from the back was flicked on by Stiliyan Petrov, and Gabriel Agbonlahor darted in between Rovers' two central defenders, before sliding a low shot beyond Paul Robinson's despairing dive and into the far corner.
It was the England striker's fourth goal in as many games and it stunned the home fans into silence.
To their credit, Rovers' response was immediate and they were almost back on level terms within three minutes.
A header from Pascal Chimbonda found its way to Franco Di Santo, who was in space on the edge of the six-yard box but, just as the Argentine pulled the trigger, former Rover Stephen Warnock appeared from nowhere to make a brilliant last-ditch block.
Villa continued to look menacing on the break, and giant striker John Carew was only inches away from connecting with Ashley Young's raking left-wing cross.
However, Martin O'Neill's side were then undone by a route one goal in the 24th minute.
Ryan Nelsen's hopeful punt forwards was flicked on by Dunn and defender Chris Samba, who had stayed up from the previous attack, stabbed a shot past Brad Friedel with his outstretched boot.
That goal gave Rovers fresh impetus and they were only denied a second goal by an inspired piece of keeping from Friedel, who somehow got a hand to Dunn's overhead kick and diverted it over the bar from point-blank range.
The second half was relatively low-key in comparison to the first, until Grella's clumsy challenge on James Milner in the 68th minute resulted in the Australian's second yellow card of the afternoon.
However, Villa failed to make the most of their numerical advantage during the closing stages.
In fact, if anything it was Rovers who looked the most likely winners, and they got their just rewards in the 89th minute when Richard Dunne handled a shot from Di Santo in the area, and Dunn beat Friedel from the resulting spot-kick.