After dominating much of the first half, Reading were sunk by three second-half goals as Forest stretched their unbeaten run to six matches.
Ben Osborn lashed in the opener from long distance and Matty Fryatt added a second from close range. Forest reserved their best for last when, 10 minutes from time, substitute Gary Gardner scored with a fierce 30-yard drive.
Reading face another Championship outing, away to Bolton Wanderers on Tuesday, and are in poor form before their last-eight cup clash against Bradford City next Saturday.
In contrast, Forest are undefeated in six games – winning five of them – since Dougie Freedman took over as manager from Stuart Pearce at the start of February.
Neither side impressed during a dull opening at the Madesjki Stadium. Pavel Pogrebnyak did manage to head a Jordan Obita corner goalwards but his effort was too high.
Forest replied when Michael Antonio released Osborn but the midfielder’s attempt drifted harmlessly wide.
Antonio, the former Reading forward, then tried on his own but blazed over the crossbar from just outside the home area.
Antonio then provided a cross for Jamie Paterson but his free header looped into the air and was easily caught by home goalkeeper Adam Federici.
Although Forest controlled much of the early play, Reading grew more into the game approaching half-time.
Garath McCleary crossed from the right but former Forest striker Simon Cox volleyed wide of the target.
Cox then missed an even better chance after Nathaniel Chalobah had passed to the overlapping Chris Gunter. Gunter’s cross found Cox in perfect position but he rushed his shot and drove high and wide.
Three minutes before the break, McCleary’s angled effort appeared to be going in only for Jamaal Lascelles to block it on the goal line.
Forest picked up in the second half, with substitute Chris Burke making an immediate impact on the right flank.
From a Burke cross, Fryatt glanced in a header that Federici did well to tip over the bar.
Forest’s renewed vigour was rewarded in the 56th minute when they took the lead.
There seemed little danger when Osborn gained possession 25 yards out but he let fly with a fierce drive that Federici could only watch on its way into the net.
Reading responded swiftly, with Pogrebnyak firing in a low shot that Forest keeper Karl Darlow had to watch carefully before gathering.
But Forest eased to victory with goals in the 70th and 80th minutes. Fryatt scored the first from close range after a pass from Antonio.
Substitute Gary Gardner, who had been on the pitch only three minutes, then thundered home a 30-yard drive via the bar that, again, Federici could only watch. Reading offered little after that as Forest coasted to victory.