Substitute Charlie Adam broke the deadlock shortly after the break following good work from Crouch.
After Libor Kozak had been gifted an equaliser, the lively Crouch then scored the decisive goal against the side he represented between 2002 and 2004, although it appeared he may have inadvertently controlled the ball with his arm before finding the net.
Stoke, who were eliminated from the League Cup by Manchester United in midweek, are now unbeaten in six home Premier League games, while Villa have lost their last three matches.
On-loan midfielder Stephen Ireland was not permitted to represent Stoke against his parent club, but manager Mark Hughes was boosted by centre-back Ryan Shawcross' recovery from a groin problem and Jon Walters' return from a ban.
Villa boss Paul Lambert, without Gabby Agbonlahor due to suspension, dropped striker Christian Benteke, who is without a goal in over three months.
Both sides fed several crosses into the box in the opening 25 minutes, but not one failed to produce a noteworthy opportunity.
Midway through the half, Villa forward Andreas Weimann almost got one. The 22-year-old Austrian robbed Marc Wilson of possession on the edge of the Stoke box, but was tripped by the Republic of Ireland defender to deny him a clean run on goal.
Wilson escaped with a yellow card despite Villa's protests for a red, and Ashley Westwood's subsequent free-kick was deflected out for a corner, which came to nothing.
Eight minutes before the break, Villa goalkeeper Brad Guzan did well to tip a mis-directed cross from Geoff Cameron over the crossbar. That resulted in one of nine first-half corners, but with Shawcross and his Villa counterpart Nathan Baker making a number of clearances, the sides went in goalless.
Hughes replaced Marko Arnautovic with Adam at the interval, and the substitute took just five minutes to break the deadlock. Crouch headed a long free-kick forward into the path of Adam, who spun Baker and slotted home from close range.
It could have got worse for Villa just before the hour mark. Fabian Delph was perhaps fortunate to get away with a booking for hacking down Crouch, and within seconds of the restart the 24-year-old midfielder tripped Adam on the edge of the Villa box. Referee Craig Pawson awarded the free-kick, but spared Delph a second yellow card.
Villa then equalised against the run of play. Following a long punt forward from Guzan, Erik Pieters attempted to head the ball back to his goalkeeper, only for Kozak to intercept and slot home.
Parity lasted just four minutes. Crouch appeared to control a Cameron cross with his arm, but the giant striker was not penalised and duly struck the ball past Guzan to score against his former club.
Crouch hit the post with a delicate backheel two minutes later, before Asmir Begovic made a fine save, tipping over from a Kozak volley.
Villa tried to get back into the game once again, but Stoke defended well and held on for a deserved victory.
Get the best features, fun and footballing frolics straight to your inbox every week.
Thank you for signing up to Four Four Two. You will receive a verification email shortly.
There was a problem. Please refresh the page and try again.