Fabian Delph scored the winner ten minutes from time thanks to a stunning long-range strike.
Gabby Agbonlahor had given Villa a first-half lead before Jay Rodriguez levelled three minutes after the break.
Libor Kozak headed the visitors back in front after 64 minutes, but Dani Osvaldo restored parity again just five minutes later.
However, Villa were not to be denied and scored with their third shot on goal as Delph fired in the winner from 25 yards.
All three of Villa’s goals came against the run of play, as Saints were made to pay for their failure to turn their domination into goals.
Having lost at Arsenal and Chelsea, this defeat saw Southampton fall to three defeats on the trot for the first time since Mauricio Pochettino’s arrival in January.
Saints began brightly and captain Adam Lallana saw a cross clip the bar, before Agbonlahor showed pace and composure to net the opener after 15 minutes.
Agbonlahor turned Maya Yoshida on the halfway line to latch on to a hopeful Delph through ball, burst forward and cut past the sliding Dejan Lovren before coolly slotting home.
It was just the third goal Southampton have conceded at home this season and one they quickly attempted to make amends for.
Rodriguez met a looped Nathaniel Clyne cross with an incredibly powerful header, but Guzan was alert to acrobatically turn the ball around the post and Lovren had a header blocked from the resulting corner.
A great last-ditch Ciaran Clark interception denied Lallana another chance at goal as Saints continued to up the ante, with Pochettino bringing on Osvaldo for James Ward-Prowse after just 38 minutes in search of a change in fortunes.
Karim El Ahmadi was inches away from shocking Saints again moments into the second half, only for Rodriguez to head home Clyne’s cross at the other end shortly afterwards.
It was no less than Saints deserved after dominating possession, although Villa again caught them out again through Kozak – starting in attack instead of Christian Benteke, dropped after seven scoreless matches.
Jack Cork was caught out by El Ahmadi on the right flank and the Morocco international’s cross was turned home by Kozak.
It was the summer signing’s last action of note, replaced immediately by Benteke who saw penalty appeals waved away soon after.
Saints were soon level again, though. Substitute Jose Fonte sent a fine right-wing cross to Lambert, whose knock-back was bundled home by Osvaldo.
Rodriguez came close to making it 3-2 moments later with a fine header, only for Villa to again go ahead and in some style.
Again against the run of play, Delph was given space to voyage forwards and struck home an outstanding 25-yard effort into the top corner.
Saints pushed for yet another leveller, but were unable to save their unbeaten home record.