Reading slipped to a third home defeat on the spin as first-half goals from Ashley Fletcher and Marc Bola allowed play-off hopefuls Middlesbrough to cut the gap to the top-six.
Despite favourable results in the table meaning that Reading stay in fifth in the Championship, they missed out on the chance to gain ground on their rivals after both Swansea City, Bournemouth and Brentford were also beaten.
After a good spell in the first-half, Reading were caught cold as Fletcher gave Boro the lead before a powerful strike from Bola doubled the visitors’ lead in the 29th minute.
The Royals failed to break down a resilient defensive unit as Neil Warnock’s side move just five points away from Reading.
The Royals ended a run of two straight defeats with a midweek away win at Bristol City and Josh Laurent returned to the starting line-up in the only change from the team that beat the Robins after missing out after a minor injury.
The Royals made a promising start with a long spell of possession and had their first encouraging move forward when Alfa Semedo drove down the left-wing, breezed past a Boro defender with a piece of skill but couldn’t find a teammate in the middle with his cross seven minutes into the contest.
Boro were looking to catch Reading on the break, but the persistent work of Andy Rinomhota ensured that Duncan Watmore didn’t progress too far into the Royals half as he fouled the forward just past the halfway line.
More tireless work in the centre of the park saw Josh Laurent use his strength to shrug Watmore off the ball and pounce into attack as he broke forward and won a free-kick wide on the left, 30 yards from goal.
Andy Yiadom tried to meet Olise’s delivery at the back post but couldn’t make strong enough contact to create a chance at goal, while Rinomhota had to cover at the back to once again prevent a Boro counter attack.
Lucas Joao had his first sight of goal in the 20th minute when he found some space in the box to meet Olise’s corner, but he couldn’t direct his header on target.
Despite having the better of the play, the Royals were caught out in the 22nd minute when the visitors took the lead with their first meaningful attack.
A deep free-kick into the box left Dael Fry in space at the back post and he guided a header back into the centre which was met by Ashley Fletcher who was left to convert from close range to punish Reading for their slack marking form the set-piece.
Reading moved the ball forward quickly through Olise and Laurent, before Ovie Ejaria worked space for a shot but his effort whistled just wide of the far post.
But the Royals were put further behind when Boro notched their second goal of the afternoon just before the half hour mark.
Sam Morsy used his body to shield the ball in the box and laid the ball off for Marc Bola who was left unmarked on the edge of the box and made Reading pay as he smashed an unstoppable effort into the roof of the net past a helpless Rafael Cabral.
Reading were struggling to create clear cut chances against a tightly-knit Boro defence and were limited to set pieces chances as Tom McIntyre leapt well but headed wide from an Olise corner.
Boro had a superb chance to make it three on the stroke of half-time as they broke forward with a two-on-two situation. Jonny Howson slipped the ball through to Paddy McNair for a one-on-one with Rafael, but he hit his shot too close to the Brazilian keeper who got down low to make an important stop.
Paunović made a double switch at the break as Tomas Esteves and Lewis Gibson replaced Omar Richards and Semedo.
Reading left themselves open at the back when searching for a way back into the game, and Watmore had the chance to punish them on a one-man charge after picking the ball up from a Royals corner.
With Rafael stranded out of his goal, Watmore delayed the chance to shoot and tried to take the ball round Michael Morrison, but lost possession and squandered the chance after his heavy touch.
Morrison found Yiadom with a long diagonal pass, and he was played through after trading passes with Esteves but the full-back poked an effort wide of goal.
Reading thought they had a way back into the match when Ejaira played a beautiful pass to slice open the Boro defence and find Olise who placed the ball past the keeper, but the offside flag went up quickly to rule the goal out.
George Puscas was introduced into the action in place of Ejaria in the 77th minute as the Royals pushed to find a way back into the game with an extra forward on the field.
Boro had a chance to wrap the game up in the 80th minute when Marvin Johnson burst forward and played the ball out wide for Nathaniel Mendez-Laing who forced a corner from Rafael who pushed the ball away at the near post.
Morrison rushed forward from defence and hit a powerful strike towards goal that was pushed away from Marcus Bettinelli to maintain Boro’s clean sheet.
Boro kept the door shut to frustrate Reading and hold out for three points as the Royals’ home form continues to halt their progress.
Reading have a chance to bounce back on Tuesday night when they make the short trip to face bottom of the table Wycombe Wanderers.
Reading: Rafael, Richards, McIntyre, Morrison (c), Yiadom, Rinomhota, Laurent, Semedo, Ejaria, Olise, Joao
Subs: Southwood, Esteves, Moore, Gibson, Holmes, Tetek, Aluko, Puscas, Baldock
Middlesbrough: Bettinelli, Fisher, Dijksteel, Fry, McNair, Bola, Howson, Morsy, Kebano, Watmore, Fletcher
Subs: Archer, Hall, Spence, Coulson, Johnson, Saville, Mendez-Laing, Akpom, Assombalonga
Goals: Fletcher 22′, Bola 29′