Alen Halilovic scored the only goal of the match in the 55th minute as the Royals stretch their unbeaten run to four games while consigning Boro to a second consecutive defeat.
Story of the match
Middlesbrough had the ball in the back of the net just two minutes into the match, but Matt Crooks' downward header was ruled out as Isaiah Jones' cross had come from the left but from behind the byline.
A superb sequence of intricate passes built a breakaway chance for the hosts as they worked their way out of a tight corner, but Dele Bashiru's final ball for Halilovic was just overhit and the Croatian shot wide.
Halilovic then produced another superb through ball to find John Swift in space inside the Middlesbrough area. He brought it down, but Joe Lumley made a fine save, leaping to his left to make the save.
Swift had another opportunity when a free-kick was awarded to the Royals just outside the penalty area, but this time his attempt took a deflection and went well wide of its intended target.
In the 40th minute, Andraz Sporar looked to latch onto a through ball but sliced his shot harmlessly wide. At the other end, a delightful ball from Halilovic found Junior Hoilett, but he was adjudged to be marginally offside as he slid in a low cross to the near post.
Reading should have opened the scoring early in the second half. Danny Drinkwater slotted the ball through to Dele-Bashiru clean through on goal. Lumley made himself big and he saved brilliantly with his legs.
Ten minutes into the second half the Royals had a deserved lead. Swift found space down the right side of the area and pulled the ball back to Halilovic. He scuffed the ball goalwards and beyond the wrongfooted Lumley to give the hosts a 1-0 lead.
Swift and Ovie Ejaria combined to set up Halilovic for another effort at goal, but this time his left-footed strike flew over the crossbar from just inside the Boro area.
Lumley was called in action again, getting down well to his left to save a Hoilett effort that was heading inside the right post. Reading nearly found a second breaking through Ejaria and Dele-Bashiru only for Hoilett’s low cross to be intercepted and the move halted by the offside flag.
Middlesbrough continued to push for an equalizer and Sporar arrowed high over the crossbar from 18 yards out and Matt Crooks was first to arrive to a cross from Carlos Tavernier, but the combination of Luke Southwood and Josh Laurent saw off the danger.
Hoilett pulled the trigger at the other end after collecting a nice one-two from Baba Rahman, but his effort from 22 yards out sailed over the crossbar.
Boro were reduced to ten men when Crooks was shown a straight red card for a late challenge on Southwood on the edge of the six yard box.
The Royals nearly put the game to bed when Dejan Tetek marauded down the right and pulled the ball back for Ejaria, but his effort deflected high over the crossbar for a corner
The very last action of the game saw a corner swung into the mixer that was glanced on by Lumley wide of the far side of Southwood's goal and Reading hung on for all three points.
Man of the match: Danny Drinkwater
He was a force in the middle of the park, pulling the strings while playing in a deeper-lying role. Always made himself available for a pass and looked to drive the team forward with his passing.