Mathieu Manset came off the bench to earn Reading a win over Barnsley and keep their promotion push alive.
The visitors laid siege to the Barnsley goal in the second half but found keeper Luke Steele in inspired form.
The home side's stopper denied Zurab Khizanishvili, Simon Church and Shane Long with fine saves but could not stop Manset's late, close-range strike.
Andy Gray went close for the hosts with a header but the Royals held on move to within three points of the play-offs.
The visitors started well and Simon Church nearly opened the scoring with a shot that forced Steele into his first save of the afternoon, before the impressive Church drove a shot wide.
Barnsley's Marlon Harewood had a shot blocked by Ian Harte before his cross allowed Gray to head on target but Alex McCarthy pulled off a fine save.
Reading looked sharper after the break and Brian Howard saw a fierce strike palmed away by Steele.
Steele pulled off another good stop to deny Shane Long, before Long and Howard combined for the former to head over.
Steele then athletically tipped Khizanishvili's powerful header over the bar before Long directed a header off target.
Reading boss Brian McDermott brought on Manset in search of a goal and the substitute provided the breakthrough, taking just five minutes to make an impact as he linked up with Long to finish from close range.
That prompted a late bombardment from Barnsley but Reading held out.
Live text and stats
Saturday, 19 March 2011
03 McEveley (Devaney 46)
20 Colace yellow card (Butterfield 65)
23 Arismendi yellow card
27 Gray (Bennett 80)
20 Howard (Antonio 78)
09 Long yellow card
18 Church (Manset 66)
Ref: TannerAtt: 10,284
Attempts on target
Attempts off target
90:00+3:27 The referee blows for the end of the match.
90:00+2:49 Foul by Shane Long on Matthew Hill, free kick awarded. Luke Steele restarts play with the free kick.
90:00+2:49 Booking Shane Long is cautioned.
90:00+1:53 Short corner taken by Jay Tabb from the right by-line.
90:00+0:56 Shane Long gives away a free kick for an unfair challenge on Diego Arismendi. Free kick taken by Matthew Hill.
90:00+0:30 The offside flag is raised against Shane Long. Indirect free kick taken by Luke Steele.
89:35 Diego Arismendi gives away a free kick for an unfair challenge on Shane Long. Free kick taken by Ivar Ingimarsson.
88:59 Jay Tabb takes a short corner.
88:51 The ball is delivered by Jimmy Kebe, Nathan Doyle makes a clearance.
86:25 Corner taken by Jacob Butterfield from the right by-line, save by Alex McCarthy.
86:06 Martin Devaney takes a shot. Save by Alex McCarthy.
85:29 Jay Tabb takes a short corner.
84:54 Mathieu Manset takes a shot. Save by Luke Steele.
82:53 Effort from just outside the area by Jim O'Brien goes over the target.
81:14 Free kick awarded for a foul by Kieran Trippier on Jay Tabb. Ian Harte produces a shot on goal direct from the free kick,
Luke Steele makes a save.
80:55 Short corner taken by Jay Tabb.
80:25 Inswinging corner taken by Jay Tabb from the right by-line, clearance by Steven Bennett.
79:04 Substitution Steven Bennett is brought on as a substitute for Andy Gray.
78:34 Kieran Trippier challenges Michail Antonio unfairly and gives away a free kick. The free kick is swung in left-footed by Ian
Harte, Matthew Hill makes a clearance.
77:40 Substitution Brian Howard leaves the field to be replaced by Michail Antonio.
77:13 Diego Arismendi takes a shot. Save by Alex McCarthy.
76:44 Corner taken by Kieran Trippier played to the near post, clearance made by Shane Long.
75:14 Jem Karacan fouled by Jacob Butterfield, the ref awards a free kick. Direct free kick taken by Alex McCarthy.
74:17 Corner taken right-footed by Jacob Butterfield to the near post, clearance made by Shane Long.
74:05 Marlon Harewood takes a shot. Alex McCarthy makes a save.
70:19 Assist on the goal came from Shane Long.
70:19 GOAL - Mathieu Manset:Barnsley 0 - 1 Reading Mathieu Manset fires in a goal from close range to the bottom left corner of the goal. Barnsley 0-1 Reading.
68:11 Inswinging corner taken by Brian Howard, Ivar Ingimarsson takes a shot. Save made by Luke Steele.
66:00 The referee blows for offside. Zurab Khizanishvili restarts play with the free kick.
65:24 Substitution Mathieu Manset comes on in place of Simon Church.
65:13 Effort from the edge of the area by Marlon Harewood goes wide of the right-hand upright.
64:17 Substitution Hugo Colace goes off and Jacob Butterfield comes on.
63:30 Corner taken right-footed by Simon Church from the left by-line to the near post, Kieran Trippier makes a clearance.
63:03 Unfair challenge on Brynjar Gunnarsson by Martin Devaney results in a free kick. Alex McCarthy takes the free kick.
59:43 Inswinging corner taken right-footed by Simon Church, Headed effort from inside the penalty area by Shane Long misses to the
right of the target.
59:22 Kieran Trippier gives away a free kick for an unfair challenge on Simon Church. Free kick crossed left-footed by Ian Harte
from left wing, clearance by Matthew Hill.
56:46 Simon Church challenges Kieran Trippier unfairly and gives away a free kick. Free kick taken by Luke Steele.
56:25 Corner taken by Simon Church, save by Luke Steele.
55:40 Inswinging corner taken by Brian Howard, Zurab Khizanishvili takes a shot. Luke Steele makes a save.
54:43 Diego Arismendi concedes a free kick for a foul on Jay Tabb. Direct free kick taken by Ian Harte.
53:11 Corner taken right-footed by Kieran Trippier from the right by-line, clearance by Zurab Khizanishvili.
51:15 Unfair challenge on Brian Howard by Hugo Colace results in a free kick. Shot comes in from Ian Harte from the free kick.
51:15 Booking Hugo Colace goes into the book.
49:10 Centre by Brian Howard, Headed effort on goal by Shane Long from just inside the box goes harmlessly over the goal.
48:47 Short corner taken by Brian Howard from the right by-line.
48:06 Inswinging corner taken from the right by-line by Brian Howard, Shot by Shane Long. Luke Steele makes a save.
46:56 Kieran Trippier takes the outswinging corner, Zurab Khizanishvili manages to make a clearance.
46:16 Brian Howard has an effort at goal from 25 yards. Save by Luke Steele.
45:01 The second half kicks off.
45:01 Substitution (Barnsley) makes a substitution, with Martin Devaney coming on for Jay McEveley.
45:00+1:16 The referee calls an end to the first half.
43:37 Ian Harte gives away a free kick for an unfair challenge on Jim O'Brien. Kieran Trippier restarts play with the free kick.
43:09 Andy Gray is caught offside. Free kick taken by Alex McCarthy.
40:28 Ivar Ingimarsson concedes a free kick for a foul on Marlon Harewood. Free kick crossed by Matthew Hill, Ivar Ingimarsson manages
to make a clearance.
38:54 Marlon Harewood fouled by Brynjar Gunnarsson, the ref awards a free kick. Matthew Hill takes the direct free kick.
38:21 Diego Arismendi is flagged offside by the assistant referee. Alex McCarthy restarts play with the free kick.
37:39 Inswinging corner taken by Jay McEveley from the right by-line, Ian Harte makes a clearance.
37:30 Jim O'Brien sends in a cross, clearance made by Zurab Khizanishvili.
37:08 Short corner taken by Jay McEveley.
36:26 Jimmy Kebe has a shot on goal from outside the area which misses right.
36:13 The ball is crossed by Kieran Trippier, Ivar Ingimarsson manages to make a clearance.
34:45 Diego Arismendi has an effort at goal from outside the penalty box missing to the wide right of the goal.
34:30 Outswinging corner taken left-footed by Jay McEveley, clearance made by Ivar Ingimarsson.
34:12 Centre by Marlon Harewood, Andy Gray takes a shot. Alex McCarthy makes a save.
29:23 Brian Howard fouled by Diego Arismendi, the ref awards a free kick. Free kick crossed left-footed by Ian Harte from left channel,
Matthew Hill makes a clearance.
29:23 Booking The referee cautions Diego Arismendi for unsporting behaviour.
26:01 Diego Arismendi delivers the ball, save made by Alex McCarthy.
25:18 Foul by Zurab Khizanishvili on Jim O'Brien, free kick awarded. Kieran Trippier restarts play with the free kick.
25:08 The ball is delivered by Jem Karacan, save made by Luke Steele.
24:09 Jay McEveley challenges Jimmy Kebe unfairly and gives away a free kick. Ivar Ingimarsson takes the free kick.
22:27 Marlon Harewood takes a shot. Ian Harte gets a block in.
19:57 Simon Church has an effort at goal from just inside the box that misses to the right of the goal.
18:31 Handball by Brian Howard. Luke Steele takes the free kick.
16:45 The ball is swung over by Jem Karacan.
16:01 Nathan Doyle fouled by Shane Long, the ref awards a free kick. Direct free kick taken by Luke Steele.
13:46 Jay McEveley crosses the ball, Effort from inside the area by Jim O'Brien misses to the left of the goal.
12:29 Handball decision goes against Ian Harte. Luke Steele restarts play with the free kick.
11:55 The ball is delivered by Simon Church, Jay McEveley manages to make a clearance.
9:55 The referee blows for offside. Luke Steele takes the free kick.
9:08 Free kick awarded for a foul by Hugo Colace on Jem Karacan. Ivar Ingimarsson takes the free kick.
5:54 The assistant referee signals for offside against Brian Howard. Luke Steele restarts play with the free kick.
4:39 The ball is sent over by Kieran Trippier, Marlon Harewood takes a shot. Save by Alex McCarthy.
2:53 Simon Church takes a shot. Save by Luke Steele.
2:15 Jay Tabb delivers the ball, Headed effort from inside the penalty area by Shane Long misses to the right of the target.
1:17 The official flags Jay McEveley offside. Alex McCarthy takes the indirect free kick.
0:00 The ref blows the whistle to begin the match.
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.