The hosts looked set for a straightforward win when they led 3-0 with 15 minutes remaining but Norwich scored twice in a minute to set up a nervy finish.
But Sam Gallagher's first Premier League goal settled Southampton's nerves, and the result, leaving Norwich winless in seven away matches in the top flight.
Morgan Schneiderlin fired Southampton ahead after just five minutes, with Rickie Lambert and Jay Rodriguez netting after the interval to put Mauricio Pochettino's men well in control.
But Johan Elmander and Robert Snodgrass scored in quick succession to give the visitors hope late on, only to see it dashed by injury-time substitute Gallagher.
After just one home win from their previous eight in the league, Southampton coach Pochettino highlighted the importance of improving their form at St Mary's Stadium and his players responded well by taking an early lead.
Gaston Ramirez found space just inside from the right wing and slipped an inch-perfect pass into the area for Schneiderlin, who coolly slotted past the approaching John Ruddy.
Norwich started to look more settled as the game wore on and created their first chance in the 33rd minute, but Gary Hooper blasted off target after Snodgrass played him into the area.
Southampton began the second half with renewed focus and within five minutes Ruddy was forced into action as he tipped James Ward-Prowse's 20-yard effort around the post.
Pochettino's charges increased their advantage just before the hour mark as Lambert expertly cut inside Joseph Yobo before confidently finding the bottom-right corner.
Then Rodriguez strengthened his chances of an England FIFA World Cup spot by grabbing his 12th league goal of the season, tapping home from close-range in the 72nd minute to seemingly wrap up victory, but Norwich were resurgent in the final five minutes.
First, Elmander pounced on Dejan Lovren's botched back-pass and prodded under Artur Boruc, before Snodgrass smashed in a rebound following a Ricky van Wolfswinkel effort.
Southampton re-opened a two-goal lead in stoppage time, though, as Gallagher collected Steven Davis' pass to score a personal landmark goal, moving the hosts up to eighth.
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.