Villa went ahead in the 61st minute through Stephen Warnock, but Bolton responded immediately with a Martin Petrov penalty and a strike from David Ngog, the two goals separated by just 64 seconds.
It came after a strong first half from the hosts who faded badly in the second, and the result means Bolton are now just three points behind Alex McLeish’s side in the Premier League table.
Bolton remain in the relegation zone but are only a point behind Wigan and Queens Park Rangers, and have played a game less than both those sides and Villa.
Villa were the more adventurous and fluent in the first 45 minutes and created several chances to break the deadlock. As early as the first minute, Chris Herd headed over when unmarked at a corner, as the home side almost took the lead early on.
Further opportunities came when Emile Heskey spun and shot straight at Adam Bogdan, before Charles N’Zogbia curled a delightful free-kick onto the outside of the left post. Prior to that Warnock had struck the bar as Villa really cranked up the pressure in a rousing final few minutes of the first half.
Bolton only had one half-chance in the opening period, when Petrov got down the left and whipped a dangerous ball across the face of goal which Chris Eagles came close to connecting with.
The visitors responded in the second half and came out after the break in determined mood. Eagles forced a save from Shay Given with a free-kick, but it was the home side who took the lead just after the hour mark.
N’Zogbia was the creator as he got to the by-line and cut the ball back for Warnock, who arrived right on time to stroke it home from the penalty spot.
Villa fans barely had time to celebrate before Bolton equalised from the penalty spot. Carlos Cuellar tripped Mark Davies and Petrov made no mistake, as Bolton drew level just a minute after they had fallen behind.
A remarkable comeback was completed immediately as Eagles remained in control and on his feet inside Villa’s area with a tricky run, laying the ball off for Ngog to slot it in.
Both sides went flat out after that, Villa in an attempt to pull a goal back after being stunned and Bolton in search of a killer third, but it remained 2-1 as Bolton held on for victory and a crucial three points.