Villa had threatened a third successive league victory when Christian Benteke fired them into a first half lead against the run of play.
But Liverpool hit back two minutes after half-time through Jordan Henderson’s well-taken chip and Steven Gerrard then stepped up on the hour to convert a penalty after Luis Suarez had been felled inside the box.
The result keeps Villa in the bottom three on goal-difference, while seventh-placed Liverpool slashed the gap to Merseyside rivals Everton to three points.
Villa posed plenty of problems for Liverpool in the first half and Gabriel Agbonlahor should have put the hosts ahead after 17 minutes but fired his close-range shot straight at Pepe Reina.
Benteke had scored twice in the 3-1 win at Anfield earlier in the season and after 31 minutes he put Villa ahead.
Ashley Westwood’s long ball was turned back by Agbonlahor to Benteke who drilled a fierce shot past Reina who got a hand on the ball but could not keep it out of the net. It was the 18th goal of the season from the Belgian international.
Liverpool failed to level before the break but did so soon after when Philippe Coutinho’s defence-splitting pass was seized on by Henderson who flicked the ball over Guzan into the corner of the net for his fourth goal of the season.
With Liverpool on the front foot and pressure building it came as no surprise when the lively Suarez was needlessly brought down in the box by Nathan Baker and the resulting spot-kick was converted by Gerrard.
Andreas Weimann could have made it 2-2 but scooped his shot over the bar from 10 yards and Gerrard then reacted well at the other end to head Benteke’s header off the line at full stretch from a corner.
But Liverpool had succeeded in taking much of the sting out of Villa’s attacking threat and quietening the Holte End, who had their late celebrations cut short after Benteke’s injury time effort was ruled out for offside.