Nottingham Forest extended their unbeaten league run to 18 matches and closed the gap on Championship leaders Newcastle with a victory over Reading.
Paul Anderson put the hosts 1-0 in front in the 11th minute before Robert Earnshaw struck in the 41st minute.
Reading earned a penalty in an incident which saw Nicky Shorey sent off, but goalkeeper Lee Camp saved Brian Howard's 68th-minute spot-kick.
Camp twice denied Simon Church before Jimmy Kibbe grabbed a late consolation.
The victory takes Forest to within two points of leaders Newcastle while Reading, fresh from their FA Cup giant-killing exploits against Liverpool in the week, plunge further towards the relegation zone following their sixth league game without a victory.
Forest conjured up the perfect start when midfielder Chris Cohen combined with Earnshaw on the edge of the box before squaring the ball to Anderson, who fired home from 12 yards.
And Wales international Earnshaw doubled the head when on-loan winger Radoslaw Majewski found the striker on the penalty spot before steering the ball into the bottom corner.
Reading improved significantly in the second half, but could not penetrate the obdurate figure of Camp between the posts.
The Forest keeper produced two outstanding saves to deny Church, both using his foot to clear the danger from two headers.
Substitute Kebe earned Reading a penalty when he was brought down inside the box by on-loan defender Shorey, whose tackle earned a red card.
But Camp was once again the hero as blocked half-time replacement Howard's spot-kick.
The goalkeeper was eventually beaten in the fourth minute of injury time as Malian Kebe headed Jem Karacan's cross.
Nottingham Forest manager Billy Davies:
"We could have had four or five goals in the first half but only scored twice and that gave Reading the opportunity to come back at us.
"It was a potential trapdoor for us playing against a side in a totally false position and they nearly made us pay in the second half.
"If we had scored a third goal - as we should - it would have been a totally different type of game in the second half and it's a lesson for us to learn."
Reading caretaker manager Brian McDermott:
"We were very disappointed with our first-half performance but we were much better in the second and I thought we should have got something from the game.
"The Forest keeper was the man of the match and if we had scored 10 minutes earlier than we did, we would have got some reward.
"But we nearly got something against a very strong and talented team who have a really good chance of going up this season."
87:53 Inswinging corner taken from the left by-line by Jem Karacan, save made by Lee Camp.
87:17 The free kick is delivered left-footed by Brian Howard from right wing, Wes Morgan makes a clearance.
87:17 Booking Paul Anderson goes into the referee's book.
87:04 Jimmy Kebe fouled by Paul Anderson, the ref awards a free kick.
85:25 Jem Karacan challenges Chris Cohen unfairly and gives away a free kick. Free kick taken by Lee Camp.
84:58 Nathan Tyson has an effort at goal from outside the penalty box which goes wide right of the target.
84:04 Jimmy Kebe is ruled offside. Lee Camp takes the free kick.
82:51 Substitution Dexter Blackstock leaves the field to be replaced by Nathan Tyson.
82:35 Chris Cohen has an effort at goal from outside the area missing to the wide right of the goal.
80:27 Centre by Andy Griffin.
80:00 Dexter Blackstock concedes a free kick for a foul on Matthew Mills. Matthew Mills takes the direct free kick.
79:03 Substitution Luke Chambers comes on in place of Radoslaw Majewski.
76:55 Substitution Shane Long replaces Jay Tabb.
76:55 Jem Karacan takes a inswinging corner.
75:46 The ball is swung over by Ryan Bertrand, Wes Morgan manages to make a clearance.
73:30 Gunnar Heidar Thorvaldsson is ruled offside. Direct free kick taken by Lee Camp.
71:42 Foul by Ivar Ingimarsson on Dexter Blackstock, free kick awarded. Wes Morgan takes the direct free kick.
70:06 Paul McKenna challenges Gunnar Heidar Thorvaldsson unfairly and gives away a free kick. The free kick is swung in left-footed
by Brian Howard, Chris Gunter manages to make a clearance.
69:16 Substitution (Nottm Forest) makes a substitution, with James Perch coming on for Robert Earnshaw.
67:36 Placed penalty taken by Brian Howard saved by Lee Camp. Nottm Forest 2-0 Reading.
67:36 Sent off Nicky Shorey is shown a red card for professional foul.
67:01 Foul by Nicky Shorey on Jimmy Kebe, Penalty awarded.
Correction - 65:02 Substitution Simon Church leaves the field to be replaced by Jimmy Kebe.
65:02 Substitution (Reading) makes a substitution, with Jimmy Kebe coming on for Simon Church.
63:33 Radoslaw Majewski takes a shot. Save by Adam Federici.
63:07 Centre by Chris Gunter, clearance made by Andy Griffin.
61:15 Free kick awarded for an unfair challenge on Chris Gunter by Jay Tabb. Free kick taken by Lee Camp.
60:47 Paul Anderson gives away a free kick for an unfair challenge on Ryan Bertrand. Ivar Ingimarsson restarts play with the free
59:31 The ball is delivered by Chris Cohen, clearance by Ryan Bertrand.
57:51 Ryan Bertrand sends in a cross, Simon Church takes a shot. Save by Lee Camp.
57:02 The ball is sent over by Ryan Bertrand, Simon Church takes a shot. Save made by Lee Camp.
56:36 Free kick awarded for an unfair challenge on Simon Church by Kelvin Wilson. Free kick taken by Ryan Bertrand.
52:59 The referee blows for offside against Paul Anderson. Adam Federici takes the direct free kick.
50:46 Inswinging corner taken by Chris Cohen from the right by-line played to the near post, save made by Adam Federici.
50:38 The ball is delivered by Chris Gunter.
49:20 A cross is delivered by Ryan Bertrand, clearance made by Nicky Shorey.
48:33 The assistant referee signals for offside against Dexter Blackstock. Adam Federici restarts play with the free kick.
46:33 Paul McKenna concedes a free kick for a foul on Jay Tabb. Free kick taken by Ryan Bertrand.
45:01 The referee starts the second half.
45:01 Substitution Brian Howard comes on in place of Kalifa Cisse.
45:00+1:23 The referee blows for half time.
45:00+0:43 Effort from inside the area by Dexter Blackstock misses to the right of the target.
44:06 Inswinging corner taken from the left by-line by Radoslaw Majewski.
43:29 Free kick awarded for a foul by Matthew Mills on Paul Anderson. The free kick is delivered left-footed by Chris Cohen from
left wing, clearance by Matthew Mills.
40:43 Radoslaw Majewski provided the assist for the goal.
40:43 GOAL - Robert Earnshaw:Nottm Forest 2 - 0 Reading Robert Earnshaw gets on the score sheet with a goal from inside the box to the bottom left corner of the goal. Nottm Forest
39:21 Free kick awarded for a foul by Paul Anderson on Ryan Bertrand. Ivar Ingimarsson takes the free kick.
37:05 Chris Gunter challenges Jay Tabb unfairly and gives away a free kick. Ryan Bertrand takes the free kick.
35:41 Free kick awarded for an unfair challenge on Chris Cohen by Ryan Bertrand. Chris Cohen takes the free kick.
34:18 Foul by Ivar Ingimarsson on Robert Earnshaw, free kick awarded. Kelvin Wilson restarts play with the free kick.
30:58 Robert Earnshaw takes the chance to get an effort at goal. Save by Adam Federici.
29:54 Paul Anderson delivers the ball.
23:47 A cross is delivered by Nicky Shorey.
22:58 The referee blows for offside. Free kick taken by Adam Federici.
21:59 Robert Earnshaw is caught offside. Free kick taken by Adam Federici.
21:18 Inswinging corner taken by Chris Cohen.
21:11 The ball is sent over by Paul McKenna, clearance made by Matthew Mills.
20:09 Free kick awarded for an unfair challenge on Radoslaw Majewski by Jem Karacan. The free kick is delivered right-footed by
Radoslaw Majewski from left wing, Ivar Ingimarsson manages to make a clearance.
16:28 Jobi McAnuff fouled by Nicky Shorey, the ref awards a free kick. Matthew Mills takes the free kick.
14:43 The official flags Dexter Blackstock offside. Adam Federici takes the direct free kick.
13:09 Dexter Blackstock concedes a free kick for a foul on Ivar Ingimarsson. Direct free kick taken by Adam Federici.
10:32 Assist by Chris Cohen.
10:32 GOAL - Paul Anderson:Nottm Forest 1 - 0 Reading Paul Anderson grabs a goal from inside the area high into the middle of the goal. Nottm Forest 1-0 Reading.
9:17 Robert Earnshaw is ruled offside. Adam Federici restarts play with the free kick.
8:51 Foul by Jem Karacan on Chris Cohen, free kick awarded. Paul McKenna takes the free kick.
7:45 Ivar Ingimarsson gives away a free kick for an unfair challenge on Dexter Blackstock. Chris Cohen takes the free kick.
6:44 Chris Gunter crosses the ball, Ivar Ingimarsson makes a clearance.
4:16 The ball is swung over by Paul Anderson, clearance by Ivar Ingimarsson.
0:27 Robert Earnshaw is flagged offside by the assistant referee. Adam Federici takes the indirect free kick.
0:00 The referee gets the game started.
Live text and data provided by The Press Association.
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.