Hughes scrambled in his second of the season 15 minutes from time after Saints goalkeeper Kelvin Davis had spilled Chris Martin's low strike in driving wind and rain on the south coast.
Southampton had taken the lead after 11 minutes when Norwich midfielder Wes Hoolahan lost possession allowing David Connolly to find Adam Lallana and the young midfielder managed to plant a fine finish in the bottom left-hand corner.
Norwich drew level eight minutes after the break when Lloyd James clumsily brought down Martin and although Hoolahan's first attempt from the spot was tipped on to the post by Davis, the Norwich midfielder made sure with his second touch.
With the game increasing in pace, Saints snuck into the lead once more as Connolly drifted in from the left and sent a stunning right-footed curling shot over Fraser Forster to nestle into the top corner.
Norwich boss Paul Lambert made a crucial double substitution on 72 minutes which paid instant dividends as Hughes popped up to extend their unbeaten run to four games.