Although Reading enjoyed the greater share of possession in the second half, the visitors remained strong at the back and held on comfortably.
Reading had endured a mini slump of three games without a win, including back-to-back home defeats against Brentford and Millwall.
But they returned to form with a 2-0 victory at Bristol City on Tuesday, in which top scorer Lucas Joao notched his 20th goal of the season.
Middlesbrough had gone five matches without success until they overcame Huddersfield 2-1 at home on Tuesday.
Eight points separated the sides at kick-off, with Reading in fifth place in the play-off zone and Boro eighth – six points adrift of the top six.
It was the former who started the better, with Michael Olise in lively form on the right flank.
From Olise's intelligent run and lay-off, Andy Rinomhota shot narrowly wide from just outside the area.
Then, from an Olise corner, Joao escaped his marker but could only head tamely over the crossbar.
Boro appeared increasingly under pressure but, in the space of seven minutes, they found themselves 2-0 ahead.
Fletcher broke the deadlock in the 22nd minute, tucking home his second goal in as many matches from close range after Dael Fry's precise onward header.
Ovie Ejaria sent a speculative effort just wide as Reading searched for a quick equaliser.
But they were breached again in the 29th minute, when left-back Bola – after smart work by Sam Morsy – hammered home a fine first goal of the season from 20 yards.
It appeared to have a positive effect initially, with the home side dictating much of the play.
But Middlesbrough could have stretched their lead further, with Duncan Watmore breaking clean through only to lose his footing at the vital moment.
Reading upped the tempo again, defender Andy Yiadom venturing forward on to an Esteves pass but then shooting wide.
Olise thought that he might have cut the deficit, when guiding the ball home in the 66th minute, but he was ruled offside.
Boro remained resolute, with keeper Marcus Bettinelli keeping his clean sheet with a fine stop from Michael Morrison near the end.