Klasnic rammed home the winner four minutes from time to wrap up a stirring comeback from the home side, who twice battled back from behind to take the points.
But Villa were left to rue Ashley Young’s saved 70th-minute spot-kick which had he converted would have put Gerard Houllier’s men 3-1 up and surely home and dry.
Darren Bent and Marc Albrighton had twice put the buoyant visitors ahead only to be hauled back by a brace from Gary Cahill before Klasnic’s dramatic intervention.
And while Owen Coyle’s men will seek to make the most of their lifeline by moving onwards and upwards, Villa are still left looking over their shoulders at the drop zone.
Bolton had started best with Kevin Davies forcing a first-minute corner and Villa defender Luke Young having to be alert to boot it clear.
Johan Elmander – replaced by match-winner Klasnic after 67 minutes – then rammed a shot over the bar before Bent was guilty of a terrible miss in the visitors’ first attack in the fifth minute.
Bent beat the offside trap to charge clear onto Ashley Young’s through-ball only to totally mis-kick as he attempted to dummy Jussi Jaaskelainen.
Luke Young headed off the line in the 14th minute after Brad Friedel spilled a corner from Martin Petrov and Davies headed the ball goalwards.
But Bent made amends for his earlier howler in the 15th minute when he prodded Villa in front from point-blank range after a superb run and cross from the right by Kyle Walker.
Bent almost grabbed his second in the 21st minute when he and David Wheater challenged for an Albrighton cross and the ball ricocheted off Bent’s head to hit the post.
Albrighton was carving the home defence up down the right and moments later his excellent run ended with a cross which was just missed by Bent and Ashley Young in the box.
Davies set up a fine chance for Sturridge in the 24th minute when he swung in a cross from the Bolton right, but the striker headed high and wide from eight yards.
Coyle’s men produced little of note until first-half injury time when Petrov swung in a corner from the left and Cahill rose highest to power home the equaliser.
Bent had a chance to put Villa back in front five minutes into the second half when he beat the offside trap to reach an Ashley Young pass, but hit a left-foot shot straight at Jaaskelainen.
Villa came even closer after 54 minutes when Albrighton crossed from the right and Stewart Downing stole in unmarked at the far post, only to side-foot wide of a gaping target.
Two minutes later the visitors pressed again, Bent’s weak shot in a crowded box blocked by Wheater and Ashley Young’s follow-up well saved low by Jaaskelainen.
Villa got the second goal their pressure deserved in the 64th minute when Downing raced down the right and crossed into the box where Albrighton swung a right-foot shot into the net.
Villa were dominant and should have wrapped the game up in the 70th minute when Young won the spot-kick after being barged by Wheater, but fired it straight at Jaaskelainen.
And Villa were made to pay just five minutes later when another excellent corner by Holden found Cahill, who saw his initial header saved by Friedel before blasting home the rebound.
Bolton then snatched their stunning winner four minutes from time when Chung-yong Lee’s deep cross from the left was headed back by Wheater for Klasnic to blast home.