Match ends, Reading 2, Middlesbrough 0.
Reading 2-0 Middlesbrough
Reading climbed to third in the Championship and ended Middlesbrough's five game winning streak with goals from Danny Williams and Nick Blackman.
Midfielder Williams headed Reading in front after just 15 seconds.
Hal Robson-Kanu found the USA international unmarked as he netted the club's third-fastest ever goal.
Nick Blackman made sure of the points with a late penalty with his eighth goal in as many games after he was fouled by Fernando Amorebieta.
Boro, five points clear in second before kick-off, were caught cold straight from the start at the Madejski Stadium.
Robson-Kanu lofted a ball across the area to the on-running Williams and Dimitrios Konstantopoulos was unable to tip it over the bar.
Reading, beaten just once in their last nine league games were full of confidence. Orlando Sa, returning from suspension, was denied a second goal as his shot was blocked on the line by Daniel Ayala.
Boro went close to an equaliser as Stewart Downing shot through a crowded penalty area only to be denied by Ali Al-Habsi.
Downing threatened again before the break, shooting just over from outside the box.
The visitors grew in confidence and continued to push for a leveller in the second half. Grant Leadbitter had the best chance as he watched a shot go just wide after the hour mark.
But just as nerves increased among the home crowd, Steve Clarke's side settled the game with two minutes left.
Blackman, among the nominees for Championship player of the month for September, was tripped by Amorebieta and referee Keith Stroud pointed to the spot.
Konstantopoulos went the wrong way and Reading had sealed their fifth win of the season.
Reading manager Steve Clarke told BBC Radio Berkshire:
"That was two good teams playing against each other today. We got the key moments in the afternoon and to get in front early changed the whole dynamic of the game.
"Middlesbrough would have come here thinking they could pick us off and contain us. In the first half, even though we didn't create as many chances, the best ones came to us.
"Defensively our shape was good and I sacrificed Nick Blackman a bit today, asking him to do a more defensive job.
"He did that really well and got his reward with the penalty at the end."
Middlesbrough manager Aitor Karanka:
"The main thing we had to do was not concede a goal in the first minute, but we did - within 20 seconds.
"Reading are a very organised team and we knew that if we conceded a goal, it would be difficult to equalise.
"We have still had a good run but we are disappointed because we wanted to win the eighth, ninth and 10th games in a row.
"I know it's impossible to win every match but it's still frustrating. I don't know why we started so badly."
- 26Al Habsi
- 11ObitaBooked at 38mins
- 17PiazonSubstituted forJohnat 63'minutes
- 9Robson-KanuSubstituted forTshibolaat 82'minutes
- 3A Taylor
- 26KalasSubstituted forNsueat 70'minutes
- 5AmorebietaBooked at 27mins
- 7LeadbitterBooked at 66minsSubstituted forAdomahat 83'minutes
- 31FabbriniSubstituted forDe Penaat 70'minutes
- 10De Pena
- Keith Stroud
- Shots on Target
Second Half ends, Reading 2, Middlesbrough 0.
Offside, Reading. Chris Gunter tries a through ball, but Orlando Sá is caught offside.
Goal! Reading 2, Middlesbrough 0. Nick Blackman (Reading) converts the penalty with a left footed shot to the bottom right corner.
Penalty conceded by Fernando Amorebieta (Middlesbrough) after a foul in the penalty area.
Penalty Reading. Nick Blackman draws a foul in the penalty area.
Corner, Middlesbrough. Conceded by Ola John.
Substitution, Middlesbrough. Albert Adomah replaces Grant Leadbitter because of an injury.
Substitution, Reading. Aaron Tshibola replaces Hal Robson-Kanu.
Attempt missed. Kike (Middlesbrough) right footed shot from the right side of the box is high and wide to the right. Assisted by Grant Leadbitter.
Offside, Middlesbrough. Fernando Amorebieta tries a through ball, but Kike is caught offside.
Corner, Middlesbrough. Conceded by Jordan Obita.
Emilio Nsue Lopez (Middlesbrough) wins a free kick in the defensive half.
Dangerous play by Orlando Sá (Reading).
Attempt missed. Carlos De Pena (Middlesbrough) header from the centre of the box misses to the right. Assisted by Emilio Nsue Lopez with a cross.
George Friend (Middlesbrough) wins a free kick in the defensive half.
Foul by Nick Blackman (Reading).
Corner, Reading. Conceded by Daniel Ayala.
Adam Clayton (Middlesbrough) wins a free kick in the defensive half.
Foul by Orlando Sá (Reading).
Cristhian Stuani (Middlesbrough) wins a free kick in the defensive half.
Foul by Oliver Norwood (Reading).
Substitution, Middlesbrough. Emilio Nsue Lopez replaces Tomas Kalas.
Substitution, Middlesbrough. Carlos De Pena replaces Diego Fabbrini.
Foul by Daniel Ayala (Middlesbrough).
Orlando Sá (Reading) wins a free kick in the defensive half.
Attempt blocked. Stewart Downing (Middlesbrough) left footed shot from outside the box is blocked. Assisted by Adam Clayton.
Kike (Middlesbrough) wins a free kick in the attacking half.
Foul by Michael Hector (Reading).
Attempt missed. Oliver Norwood (Reading) right footed shot from outside the box misses to the left from a direct free kick.
Grant Leadbitter (Middlesbrough) is shown the yellow card for a bad foul.
Foul by Grant Leadbitter (Middlesbrough).
Oliver Norwood (Reading) wins a free kick in the attacking half.
Substitution, Reading. Ola John replaces Lucas Piazon.
Attempt missed. Grant Leadbitter (Middlesbrough) right footed shot from outside the box misses to the left. Assisted by Fernando Amorebieta.
Stewart Downing (Middlesbrough) wins a free kick on the left wing.
Foul by Lucas Piazon (Reading).
Grant Leadbitter (Middlesbrough) wins a free kick in the defensive half.
Foul by Danny Williams (Reading).
Attempt missed. Orlando Sá (Reading) header from the centre of the box misses to the left. Assisted by Hal Robson-Kanu with a cross.