Reading's automatic promotion hopes suffered a major setback as they lost 2-0 to Middlesbrough to slip to a third successive defeat at the Madejski Stadium.
Boro, chasing a play-off spot, struck twice midway through the first half, with decisive finishes from Ashley Fletcher and defender Marc Bola.
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.
Paddy McNair could have made it 3-0 just before the interval but his low attempt was well saved by home goalkeeper Rafael.
Reading manager Veljko Paunovic made two substitutions at the break, bringing on Lewis Gibson and Tomas Esteves.
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.
What the managers said...
Reading's Veljko Paunovic: "We can't afford to lose these games at home. Sure, we don't have the advantage of supporters, but we have to do better to control our environment here. So there is still a certain advantage in that. But, today, this was unacceptable. I am not happy with it.
"I also have to say, though, that we have to stay calm. We have to look to improve. And we have to make sure that we don't start to become bitter about this or throw things on each other. At this stage of the season, and with the results around the league today, we can see that everyone is fighting for their lives and for their objectives. There were many scores around that weren't expected so more credit to this league and all the competitors."
Middlesbrough's Neil Warnock: "I thought it was a good performance and if I'm honest, I thought that we were in the mood before the game. Even in the hotel beforehand, though I know that sounds silly. All the lads knew what they were doing and put it all out there. I thought that we were very good tactically today.
"That was probably as good a performance - against a good side - since I've been here really. It's great (that we're getting closer to the play-offs). But we've got to keep this up now."