Norwich, who won at Bolton in their last game, moved up to ninth in the Premier League courtesy of a richly-deserved three points against Steve Bruce’s side.
Barnett tapped the Canaries ahead in the 31st minute of a first half they dominated and Morison headed home three minutes after the interval to put them in control.
Kieran Richardson drove home four minutes from time to set up a nervy finish but Paul Lambert’s side held on for the victory.
Both teams were unchanged from last weekend, when Sunderland had thumped Stoke 4-0 at the Stadium of Light.
After a bright start from the visitors, Morison created space for a shot at the edge of the Sunderland area, but his low strike was well held by Simon Mignolet.
Titus Bramble then missed a high ball through the middle, which suddenly released Wes Hoolahan 20 yards out, but he lobbed the ball over the advancing Mignolet and high into the stands.
Norwich continued to look lively through Anthony Pilkington down the right.
Despite their dominance, the Canaries were unable to further test Mignolet and slowly Sunderland grew into the match.
The visitors moved the ball quickly from the right back into the centre in the 21st minute, but Craig Gardner crashed his 20-yard shot over.
Denmark striker Nicklas Bendtner, on loan from Arsenal, pulled the ball down with a neat touch before firing goalwards, with Canaries goalkeeper John Ruddy getting down quickly to make the save.
Pilkington, who scored at Bolton last weekend, continued to look Norwich’s main threat as he darted into the right side of the area before his cross was blocked.
The Canaries did, however, go ahead in the 31st minute.
Elliott Bennett played a neat one-two with David Fox and dashed to the goal-line before cutting the ball back across the six-yard box to Barnett who tapped in from close range.
Sunderland looked for an immediate response, but Stephane Sessegnon ballooned his 20-yard effort wide.
Norwich came out of the blocks quickly at the start of the second half – and were rewarded when Morison doubled the hosts’ lead in the 48th minute.
Pilkington got away down the left, and his run into the box saw overlapping full-back Marc Tierney clip the ball across goal where Morison got above Wes Brown to power a header into the roof of the net from six yards.
The Canaries had their tails up now – with Bennett drilling wide after more positive build-up by the hosts.
There was then a massive let-off for the hosts when Bradley Johnson’s miskick in the six-yard box gifted the ball to Bendtner at the near post – but the on-loan Arsenal man saw his flick touched across the face of goal by Ruddy.
From the resulting corner, Norwich broke quickly through Russell Martin, who fed Bennett on the left.
The winger cut inside to drill an angled shot at Mignolet, which the Belgian goalkeeper palmed out and Martin’s follow-up was deflected wide.
With 23 minutes left, Sunderland sent on Connor Wickham for Sessegnon, the former Ipswich striker receiving a less than warm welcome from the Norwich faithful.
The £8million signing had a chance to make an instant impact and silence the Barclay End – but headed straight at Ruddy from a corner.
Norwich made a double change in the 78th minute when James Vaughan replaced the hard-working Pilkington and captain Grant Holt came on for Morison.
Vaughan, a summer signing from Everton, dragged his 20-yard shot wide after another quick break by the home side.
Sunderland, though, set up a grandstand finale when Richardson drilled a low, angled shot into the bottom right corner.
Vaughan, who missed the start of the season with a knee injury, looked to be struggling and had to be helped off as Norwich had to see out five minutes of stoppage time with 10 men.