In a goalless first period, Marc Wilson survived a red card appeal after he caught Andreas Weimann, while Geoff Cameron saw his cross-cum-shot tipped over the bar by Brad Guzan.
Adam came on as a substitute at the break and broke the deadlock on 50 minutes, turning his marker Nathan Baker after Crouch had headed down a free-kick into his path.
But the visitors were level on 66 minutes when Libor Kozak latched onto Erik Pieters’ poor header intended for keeper Asmir Begovic.
But Stoke were not to be denied and Crouch notched the winner from close range four minutes later from Cameron’s cross from the right, although there was a hint of handball.
That was the way it stayed as Mark Hughes’ side secured back-to-back home wins in the Premier League to climb above Villa into tenth.
Visiting boss Paul Lambert chose to leave struggling striker Christian Benteke out of his squad but Stoke were boosted by the presence in their side of captain Ryan Shawcross, who had been very doubtful with a groin problem.
Shawcross and his fellow defenders had to be alert as Villa began brightly, creating the first chance 10 minutes in when Ashley Westwood’s cross was headed goalwards by Baker.
Marc Albrighton was the first man in the book in the 21st minute, the Villa winger reacting to a push from Pieters with a rash challenge on the full-back. There did not appear to be any real contact but the intent was enough for referee Craig Pawson to show a yellow card.
Five minutes later Wilson picked up a booking, although Villa thought it should have been red. The defender’s poor touch just outside the area let in Weimann, who was then brought down by Wilson. The Stoke player was definitely the last man but Weimann’s touch meant Begovic was a clear favourite to get to the ball first.
Stoke had offered little of note in attack but they very nearly took the lead in the 37th minute through Cameron.
The full-back sprinted down the right and sent over a cross that would have dropped into the net but for a fine save from Guzan.
The hosts finished the half strongly and with three minutes left Oussama Assaidi jinked his way down the left and sent over a cross that would have been turned in by Crouch but for a superb block by Ciaran Clark. The rebound fell to Marko Arnautovic but he was denied by another block, this time from Baker.
Arnautovic was the man to make way as Adam came on for the start of the second half, and it took the playmaker only five minutes to score.
Clark was shown a yellow card for a crude foul on Jonathan Walters and Cameron’s free-kick was headed on by Crouch to Adam, who took the ball on his chest, turned past Baker and placed his shot beyond Guzan.
Referee Pawson was a busy man as tempers flared following a rash challenge from Fabian Delph on Crouch.
The midfielder was shown a yellow card, and was slightly fortunate to escape a second booking in a minute when he brought down Adam on the edge of the box, although Chris Herd did find his way into the book afterwards.
The equaliser came out of nothing in the 66th minute as Guzan hit the ball forward. Pieters tried to head the ball back to Begovic and only succeeded in setting up Kozak, who could not miss.
But Crouch restored Stoke’s lead when Glenn Whelan found Cameron down the right and, when Guzan and Herd tried to cut out his cross, the ball fell to Crouch in front of an empty net.
There was a suspicion of handball about the striker’s first touch but the Villa complaints were half-hearted.
Crouch almost added a third three minutes later with a flick from Pieters’ header that hit a post, while at the other end Kozak’s stinging shot was acrobatically tipped over the bar by Begovic as Stoke held on for a vital win.