It was Boro's first win in four games, but Brendan Rodgers' side has still not won at home since January 27.
Former Reading striker Leroy Lita was the matchwinner with a lively first-half performance, capped by scoring Middlesbrough's second goal after the interval.
It was the visitors who had made the brighter start, with Lita in the forefront of their threat.
In the opening minute he was just beaten in a chase for the ball by Reading keeper Adam Federici, who had to scramble at Lita's feet to clear the danger.
Nine minutes into the game Lita had another effort blocked and almost immediately saw his close-range header saved by Federici.
Middlesbrough's early pressure eventually paid off in the 12th minute with the opening goal.
Lita forced a corner, taken by Adam Johnson, and when the ball came across Sean St Ledger headed home, with the ball bouncing off the body of Federici on the way in - although Lita claimed to have got the final touch.
Reading's chances were fewer and less clear-cut. Jem Karacan's drive was blocked by his own defender Darren O'Dea, then Jimmy Kebe's right-wing cross was headed wide by Brian Howard, who saw his own effort blocked by St Ledger.
At half-time Rodgers brought Noel Hunt on for Kebe, but Lita still threatened.
In one dangerous attack he raced down the right wing and crossed in to Jeremie Aliadiere, whose first touch stopped the ball dead. Fortunately for Reading Ivar Ingimarsson managed to scramble it away before the Boro striker could shoot.
Aliadiere then fastened on to a long ball, but Federici dived at his feet to grab it to safety.
Ten minutes into the half Lita scored the goal he had been threatening all game. He beat Karacan, span away from O'Dea on the edge of the centre circle and ran on unchallenged before calmly firing low into the net past Federici's right hand.
Middlesbrough looked comfortable after that goal and closed the game down for a well-deserved win.