BBC SPORT: A superior goal difference meant Derby needed just a draw to stay in the top six but they set the tone for a disjointed and nervy display by gifting Kwesi Appiah a second-minute opener.
Darren Bent wasted a chance to level when his penalty was saved by keeper Adam Federici just before the break.
And Michael Hector’s shot and Garath McCleary’s spot-kick sealed victory.
The Rams started the day in sixth place in the Championship table, but ended in eighth as Brentford’s win over already-relegated Wiganearned them fifth spot, while Ipswich clung on to the final play-off place despite losing to Blackburn.
Wolves beat Millwall and also finished above the Rams, but missed out on goal difference.
Reading’s impressive victory ruined Derby’s day but, having won just two out of their last 12 games before hosting the Royals, the result was maybe not as shocking as it first seemed.
There was an enthusiastic minute’s applause before kick off to celebrate the life of former BBC Radio Derby presenter Colin Bloomfield, a familiar voice and face to Rams fans, who last month died aged 33 following a battle with cancer.
The warm tribute helped create a wonderful pre-match atmosphere at the iPro but the mood swiftly changed to one of disbelief and silence.
Will Hughes played a sloppy pass which allowed Appiah to run towards goal, and after Richard Keogh committed himself, the Crystal Palace loanee cleverly cut inside and slid the ball home.
The lively Tom Ince and Bent did both have decent shots saved by keeper Adam Federici, while Keogh went close and Reading’s Nathaniel Chalobah almost put through his own net under pressure from Ryan Shotton.
But the Rams were sloppy in possession in the final third, prompting head coach Steve McClaren to switch formation and bring on Jesse Lingard, play him in behind Bent and go with four at the back.
Reading, beaten FA Cup semi-finalists, had little to play but were disciplined in defence and looked dangerous when they ventured forward, but the hosts should have levelled just before the break.
Johnny Russell was bundled over in the box by Jordan Obita but Bent’s strike towards the bottom left corner was brilliantly kept out by Federici.
Derby brought on influential striker Chris Martin at the break but it made little difference.
The Royals had by far the better chances, Tarique Fosu seeing a fierce shot saved by Grant, dragging a strike wide and then going close on a third occasion.
The pressure told when Hector fired home after a poor attempted clearance by Shotton, and McCleary’s low penalty strike wrapped up victory after Jem Karacan was felled by Grant.
Derby head coach Steve McClaren: “I’m really annoyed, angry, and frustrated about the last two months and am really determined to do something about it.
“I’m not making a pledge, this is how I feel at the present moment. I’m under contract at Derby and I’ve said that all along. I’ve been questioned about all the speculation which has been going on for about six months.
“My intention is to sort this out. No one has told me otherwise and until somebody does, that’s my determination.
“I’m angry, frustrated, I want to do something about it. I want to sit down with everybody next week, I think it’s too raw, too early to make any kind of statement but what I say is what I mean.”
Reading manager Steve Clarke: “A lot of performances have been really good but the key moments in the game went against us.
“But today, the key moments in the game went for us and that’s the difference.
“The players were stuck in a little bit of a rut and had forgotten how to win a game and today they managed to remember so I’ve told them when they go away for the summer, don’t forget what it’s like to win a game. So this is a good way for us to finish.”