It was Stoke’s first away win in seven months and Villa boss Paul Lambert will be frustrated having beaten Norwich and Chelsea in their two previous home games.
Christian Benteke gave Villa an early lead, but Stoke dominated thereafter.
Peter Odemwingie scored his third goal in two games to equalise and four minutes later Peter Crouch took advantage of slack marking to put Stoke ahead.
Leandro Bacuna and Nathan Baker both failed to clear their lines and Steven Nzonzi took full advantage, beating Brad Guzan from inside the box.
Geoff Cameron rounded off the hammering in the final minute.
Lambert had called on Villa to end an inconsistent season with a good run, but that seems unlikely if they put on more performances like this.
Stoke, on the other hand, performed well, and leapfrogged Villa into 10th.
Villa started just as they had ended last week’s game against Jose Mourinho’s Blues – on top.
Lambert’s side exerted a lot of pressure on the Potters and it took just five minutes for Hughes’ men to buckle.
Ryan Bertrand found last week’s match-winner Fabian Delph, who muscled his way past his marker and pulled the ball back to Benteke, who took a touch to control before smashing a left-footed drive past Asmir Begovic.
Delph and Bertrand combined well again, but no one could get on the end of the left-back’s low cross.
Stoke started to come back into the game and Odemwingie was the main threat. The Nigerian bamboozled Baker and Ashley Westwood before curling a shot just over the bar.
Odemwingie made no mistake with his finish moments later when he ran on to Crouch’s knock-down and slotted the ball past Brad Guzan despite a last-ditch sliding tackle by Bertrand.
Four minutes later Stoke took the lead. Marko Arnautovic controlled a fine crossfield pass beautifully and then found the overlapping Erik Pieters with a cheeky backheel. The left-back powered into the box and pulled the back for Crouch, who sidefooted past Guzan to make it 2-1.
Things went from bad to worse for Villa when Karim El Ahmadi and Andreas Weimann hobbled off with injuries. The Villa boss replaced the duo with Marc Albrighton and Yacouba Sylla.
Marc Wilson could have made it 3-1 but he mis-placed a free header in the box.
Stoke still managed to open up a two-goal lead before the break though and once again Villa’s defending was not up to scratch.
Bacuna failed to deal with a simple lofted ball, allowing Arnautovic to run at the Villa back four. The Austrian winger then laid a weak pass in field which Baker diverted into the path of Nzonzi and he beat Guzan with a right-footed finish from 18 yards out.
Home fans left their seats to go for their half-time pie early. Many of those who remained booed their team off at the sound of the half-time whistle.
Villa upped their game straight after the restart. Benteke went to ground in the box after the slightest of nudges in the back from Cameron. The striker and his manager appealed for a penalty but Mark Clattenburg shook his head.
Benteke took his protest too far, shouting and pointing at the referee and he responded by showing the Belgian a yellow card.
There was no sign of a Villa comeback thereafter. Their passing was woeful at times and Stoke had little trouble opening up the home defence.
Odemwingie came in off the flank and fired a low drive that Guzan parried before Ron Vlaar hooked clear.
The Villa captain missed a header at the other end. Lambert made a change, bringing on Grant Holt for Westwood.
Hughes was also forced into a change when Pieters hobbled off with an injury.
And the home fans left their seats en masse when Cameron sidefooted home Arnautovic’s pass in the final minute to make it a four-star display.