The Blues looked to be cruising as Daniel Sturridge and Branislav Ivanovic earned them a 2-0 lead, only for Villa to rally through goals from James Collins and Eric Lichaj.
But Ivanovic's second goal of the game and then Torres' injury-time finish enabled Roberto Di Matteo's side to close the gap on fourth-placed Tottenham to two points.
It was an emotional atmosphere at Villa Park after skipper Stiliyan Petrov was diagnosed yesterday with acute leukaemia.
Petrov attended the game before starting treatment for the illness on Monday and was applauded by both sets of fans.
He had witnessed Chelsea not being over-extended by a Villa side lacking eight senior players through illness or injury until their late revival.
It was Chelsea's sixth win in eight games under Di Matteo ahead of next week's Champions League return clash with Benfica.
Villa's inexperienced line-up showed plenty of spirit but still need a few more points to avoid being dragged into a relegation battle.
The first clearcut chance fell to Chelsea striker Torres and he failed to take advantage.
David Luiz slipped a through ball to the Spaniard, who found himself with only Shay Given to beat but the Villa keeper was quickly off his line to block the shot.
Chelsea were not to be denied and after nine minutes went ahead through Sturridge's 12th goal of the season.
Salomon Kalou cut in from the left and picked out Juan Mata, whose shot was blocked by Given.
The rebound fell to Torres, who was denied by a last-ditch tackle from Stephen Warnock, but Sturridge converted the loose ball from close range.
Villa were fortunate when a fierce drive from Mikel deflected off James Collins straight into the hands of Given.
Collins had a chance at the other end when attacking a Barry Bannan corner but could not keep his header down.
Mata came close to making it 2-0 when his shot struck a post and Torres' follow-up attempt was blocked by Collins.
Sturridge was looking full of confidence and cut in from the left, forcing Given to make a low save.
Then two minutes before the interval a superb save from Petr Cech kept Chelsea ahead.
Weimann played the ball to Agbonlahor, who spun sharply 10 yards out before firing in a powerful low drive.
But Cech somehow managed to deflect the shot over the bar to deny Agbonlahor a first goal in 15 Premier League games.
After 51 minutes Ivanovic doubled Chelsea's lead. Torres attacked a near post corner from Mata and looked to get a slight touch on the ball before it fell to Ivanovic.
The defender made no mistake in turning the ball past Given.
Warnock became the first player to be yellow carded for a late challenge on Chelsea skipper John Terry.
Mata curled a long range free-kick over the bar and Torres glanced a header wide.
Collins gave Villa a lifeline with 14 minutes remaining when he headed a long throw from Lichaj past Cech.
Then four minutes later Villa Park erupted when Lichaj equalised for Alex McLeish's side.
Albrighton was the creator with a dangerous low ball across the Chelsea six-yard box and Lichaj made no mistake at the far post.
But Villa were again caught out at a corner in the 82nd minute when Ivanovic restored Chelsea's lead.
Malouda floated the ball into the danger area and no-one picked up Ivanovic as he headed past Given.
Then in time added on Torres scored his first Premier League goal for six months when he beat Given with a low drive.