George Puscas marked his return from injury and first start since early November with a match-winning goal that earned Reading three valuable points against a talented Blackburn outfit.
Reading began very brightly and the first chance was a good one. Yiadom powered down the right and did well to get the cross in at the byline. He picked out Puscas who directed a good header at goal only to see Thomas Kaminski parry it and push it over his crossbar.
Blackburn earned their first sight of goal ten minutes in, Richards sliding in to get a block in on Corry Evans' low drive at the end of a slick move by the visitors.
Puscas was looking lively and nearly broke the deadlock with an audacious effort from the half-way line. He got the ball to feet, turned, saw Kaminski off his line and launched a long-range lobbed effort that had the keeper scrambling back - but it landed on the roof of the net to Rovers' relief.
Semedo showed some neat footwork to ghost past a couple of Blackburn players and into a shooting position - he stabbed an effort at goal from 25 yards out but it was straight at Kaminski who gathered it safely into his body.
And Reading had the lead they deserved soon after. Richards pressed Harvey Elliott back towards his own goal and dispossessed him with a good tackle. The ball fell to Joao in space on the edge of the box and he drew the last defender and passed it inside to Puscas. With only the keeper to beat, he controlled the ball and coolly placed it wide of Kaminski for 1-0.
Reading kept up the pressure and Joao intercepted a crossfield pass with his head. It looped up in the air and Puscas reacted fastest, but snatched at his volley to send the ball spinning wide of the right post.
Richards took aim next, nutmegging one defender before scuttling into the box and rifling low towards goal - only for his effort to be blocked by a Robers body. The visitors tried to counter attack, but superb defending from Yiadom saw him track back and head the cross away from the lurking Brereton in the middle.
Reading had to make an early change as ever present Michael Morrison was forced to hobble off with an injury - Tom Holmes replaced Morrison at the back.
Brereton bundled his way into a shooting position on the edge of the box but with Moore in his way he was forced to shoot wide of the target and left of Rafael's goal.
Brereton did test Rafael with four minutes of the half remaining - collecting the ball from Bell he took aim from 20 yards out and forced a smart save from Rafael low to his left.
Moore came across to see a Brereton cross out for a corner with his body and Rafael claimed a deep cross from the short corner as the half-time whistle approached.
Olise tried something clever with a set piece, looking to catch the keeper out with a shot at goal from 25 yards out when everyone was expecting him to cross the ball into the box. Kaminski was alert to it though and saved low at his left post.
Half-time: Reading 1-0 Blackburn Rovers
Rovers started the second half with a new spark to their play as they looked to find an equaliser, but Richards saw a dinked cross safely behind for a corner.
Armstrong came close next, drilling low towards goal but Holmes getting a touch to it to divert it wide of the base of the right post. Reading complained that Richards had been kicked by Brereton in the build up to the chance but the referee waved away protests.
The Royals were looking to capitalise on the break, Ejaria winning a free kick when he had to be hauled down by Evans - then Olise being teed up by Puscas but seeing his low drive charged down before it could trouble Kaminski.
A superb run from Richards took him into the Blackburn box but having laid the ball off for Olise, he then got in the way of Olise's chipped ball looking for Ejaria and the move fizzled out.
Rovers were making the running and Reading were having to work hard to hold onto their slim advantage - a Stewart Downing corner ricocheted its way through but was hacked clear of the six yard box before Brereton could pounce.
Lenihan glanced a header wide from a good position and then Rafael parried a Brereton shot, Nyambe thankfully scuffing the follow-up wide of the near post.
Going into the final five minutes and the home side were hanging on bravely and Blackburn continued to press - substitute Dolan shooting over with the outside of his boot.
Four minutes of injury time were signalled and in the first of those minutes, Armstrong connected with a cross from the left but directed his left-footed volley inches wide of the near post.
And that was Blackburn's last throw of the dice. Reading had defended resolutely and survived the Rovers pressure to claim back-to-back wins.
Full-time: Reading 1-0 Blackburn Rovers
Reading: Rafael, Yiadom, Richards, Morrison (Holmes 32), Moore (c), Laurent, Semedo, Ejaria, Olise (Esteves 84), João (McIntyre 68), Pușcaș.
Unused subs: Southwood, Tetek, Azeez, Aluko, Camara, Baldock.
Scorer: Puscas 24
Blackburn Rovers: Kaminski, Nyambe, Armstrong, Rothwell (Dack 61), Bell (Douglas 84), Elliott (Dolan 69), Trybull (Buckley 84), Harwood-Bellis, Brereton, Lenihan (c), Evans (Downing 61).
Unused subs: Pears, Travis, Branthwaite, Bennett.
Yellow: Bell, Evans.