Shaun Goater struck a goal in each half as Reading saw off struggling Derby in an entertaining Madejski Stadium clash.
Goater put the Royals in control inside two minutes as his header from a Nicky Shorey free-kick earned him the 200th league goal of his career.
And a well-struck second-half goal made victory safe for Steve Coppell's side after Steve Sidwell had struck a second.
Michael Johnson pulled one back for Derby but by then the damage was done as Reading kept in touch with the First Division play-off picture.
Goater got the ball rolling with a neat flicked header from Shorey's pinpoint free-kick after Johnson had fouled Andy Hughes on the edge of the box.
He might have had a second minutes later but saw his toe poke deflect wide after a neat Reading move and Hughes saw a crisp volley hit the legs of Derby keeper Lee Grant as the home side dominated.
Sidwell's well-taken goal four minutes before half-time was no more than the home side deserved, the England Under-21 star drilling home from the edge of the box after Kevin Watson had teed him up.
Derby gave a belated debut to loan striker Noel Whelan as George Burley made a positive half-time change and the move nearly paid off as Leon Osman's low drive thumped against a post and back into the arms of grateful keeper Marcus Hahnemann.
Hahnemann also pulled off a superb fingertip save to keep out Candido Costa's rising shot, but by then Reading were three goals clear.
Shorey claimed his second assist with a flighted pass to find Goater, whose control and early shot caught Grant unawares.
Goater was denied his hat-trick two minutes later when Grant saved well with an outstretched leg and Reading started to look a little uncomfortable after Michael Johnson headed in Jamie Vincent's cross on the hour.
Osman appeared to have set up a rousing finale when he headed home with eight minutes left, only for an offside flag to end Derby's hopes of a comeback.
A goal then would have given improving Derby hope of snatching a point, but they still made life hard for the home side as Hahnemann was forced into some acrobatic late action.
HASH(0x8ae13a8)