Norwich won for just a second time in 17 Barclays Premier League games to enhance their survival claims and all but condemn Reading to relegation.
Pavel Pogrebnyak's close-range miss at the end of the first half was punished when Ryan Bennett and Elliott Bennett scored within three minutes of each other after the restart as the Canaries climbed to 13th, seven points clear of 18th-placed Wigan.
Garath McCleary pulled a goal back after 72 minutes, but, 10 points adrift with 12 to play for, Reading's one-season sojourn in the top flight appears to be coming to an end.
A first victory in Nigel Adkins' fourth game in charge was a must if the Royals were to give themselves a survival chance and drag Norwich deeper into the relegation scrap.
Reading's away record has been miserable, with five points on the road this term and they knew they must end the Canaries' six-match unbeaten run at Carrow Road, which included victory over Everton.
The Royals ended their eight-match losing streak with a 0-0 draw at Liverpool last weekend, but had to withstand an early barrage from the hosts.
The Canaries responded to vociferous support, with Elliott Bennett - one of two changes following the loss at Arsenal - twice shooting narrowly off target in the opening skirmishes.
Norwich's strong start continued when Robert Snodgrass shot wide and then Javier Garrido drilled in a low shot which Alex McCarthy gathered at the second attempt.
Michael Turner had to be replaced in defence by Ryan Bennett after 18 minutes, but Reading tested the hosts too little and too infrequently in the opening half an hour.
Their first effort came when McCleary cut in from the left and shot right-footed high and wide across goal before a later tame effort from the winger which Mark Bunn saved easily.
Slowly the Royals managed to stem the tide of Norwich attacks, with Danny Guthrie shooting over as part of a spell of sustained pressure, which included three corners which came to nothing.
A McCleary cross had Norwich in trouble inside their own six-yard box, but Sebastien Bassong, bruised from an earlier encounter with Pogrebnyak, managed to do enough to put off the Russian, who scooped the ball over.
Norwich also went close before the break when Grant Holt won an aerial challenge and found Kei Kamara, whose volley on the turn was well saved by McCarthy.
McCarthy denied Kamara four minutes into the second half, stretching to turn away a left-footed shot from an angle and from the subsequent corner Norwich went in front.
The Reading goalkeeper saved Holt's header from Snodgrass' set-piece, but the ball fell for Ryan Bennett, who took one touch and swept it in left-footed for his first Norwich goal.
A second was almost immediate as McCarthy was caught in no-man's land trying to reach a Snodgrass cross and Elliott Bennett shot through his legs and into the net.
Norwich kept up the pressure and Holt headed over from another set-piece by Snodgrass, whose shot then was punched over by McCarthy.
The Reading goalkeeper saved Kamara's header from the resulting corner as Norwich continued playing with energy.
Out of nothing, Reading pulled a goal back with 18 minutes remaining.
McCleary was allowed to run at the Norwich defence and he hit a 25-yard swerving left-foot shot which Bunn got a hand to but could not prevent going in.
Nick Blackman shot wide across goal six minutes later and McCleary acrobatically turned a shot narrowly wide in the 90th minute.
In stoppage time Stephen Kelly headed off target, but Reading ran out of time in the match and it appears their spell in the Premier League will soon end too.