The home side had to defend for long periods in the second half, but still looked capable of a the third goal when they broke away. In fact Jason Shackell hit the woodwork with a header and substitute Jonatan Johansson had a goal ruled out for offside.
The Canaries kicked off attacking the Barclay End goal and forced two corners in the first minute. The Blades weathered the early pressure and went ahead in the 17th minute when Armstrong picked up a lose ball on the edge of the penalty area and beat Robert Green to his left with a low left-foot drive.
In the 28th minute Craig Short appeared to pull down Gary Doherty in the United penalty area but referee Taylor awarded a goal kick.
However, the home side drew level 33rd minute.
Adam Drury's free-kick from the left wing was headed goalwards by Shackell and Mckenzie scored with a header from just inside the six-yard box.
In the closing minutes of the half Neil Shipperley's long-range shot came back off the post. At the other end Darren Huckerby saw his shot blocked.
Norwich took the lead in the 41st minute. Craig Fleming's diagonal cross deceived Short and Earnshaw scored from six yards, driving the ball past Paddy Kenny.
The visitors began a second half in a determined fashion putting the home defence under a lot of pressure.
The Norwich cause was not helped by some odd decisions from the referee.
Paul McVeigh left the field with an injury and was replaced by Youssef Safri nine minutes into the half.
On the hour Huckerby brought a good save from Kenny at the other end Green saved shots from Michael Tonge and Danny Webber.
Shackell's header came back off the post and Johansson's goal was ruled out for offside.
United made a double substitution ten minutes from time with a former Canary, Ade Akinbiy,i being added to the Blades attack, but he was unable to score an equaliser, leaving the home fans to celebrate their team's fourth straight home win.