Bradley Dack scored on his 100th Rovers appearance to make it back-to-back wins for Tony Mowbray’s side.

Adam Armstrong scored a fine opener with an excellent 25-yard strike before Dack doubled the advantage early in the second half.

Rovers had to weather some heavy second-half pressure as John Swift reduced the arrears before the hour.

But Rovers closed the game out well, and could have added to their two goals as Lewis Holtby, on debut, missed an excellent opening.

Rovers made three changes from the team that beat Millwall, with Tosin Adarabioyo not deemed fit enough, despite travelling, while Lewis Travis and Corry Evans replaced John Buckley and Bradley Johnson in the middle of the pitch.

Downing was moved in to a wider role, as Rovers reverted to a back four, and was quickly in to the action, whipping in a free kick that Gallagher headed wide of the target.

While Downing operated from the right, Armstrong moved to the left. It was from there he collected a pass from Downing before having time to steady himself and whip an effort in to the top corner for just his second goal since January.

Reading were wide open at the back, but possessed unpredictability in attack, as Lucas Joao and George Puscas were restored to the side. It was the Romanian who had the first sight of goal for the Royals, opting to alone from a tight angle rather than square for his strike partner as Walton watched the effort over the bar.

Rovers were playing more on the break, sparking in to life on the transition and it was from a loose Reading pass they almost made it 2-0. Corry Evans played in Gallagher who should have at least hit the target from the edge of the box as he shot narrowly over.

Downing was getting plenty of space down the right flank and was fed by an excellent Elliott Bennett pass just before the half hour. He worked the ball on to his favoured left side, but shot too closely to Rafael Cabral who gathered.

Laboured play from the hosts was frustrating the home supporters as Rovers continued to look compact in defence and a threat on the turnover of possession.

The hosts did show some signs of life late in the half though, as after penalty appeals were waved away as John Swift went down in the box, Darragh Lenihan did well to block Andy Yiadom’s strike.

And Lenihan needed to make a last-ditch challenge on Joao five minutes before the break as he threatened an equaliser, with Puscas ballooning the ball over from a tight angle.

Having seen Rovers take the lead with a long range effort, the hosts tried their luck from distance, but Christian Walton went in to the break without having to make a save as Judilson Gomes and Liam Moore failed to hit the target.

Bradley Dack had been largely quiet in the first half of what was his 100th Rovers appearance. But it took him just three second half minutes to get goal number 40 in Rovers colours. Rovers broke down the left as Armstrong and Gallagher exchanged passes before Dack controlled the cross and on the turn fired a right foot shot beyond Cabral.

All the second Rovers goal seemed to do was stir the hosts in to life, however.

Yiadom made two excellent breaks from right wing-back, one leading to Swift hitting the post with a 25-yard drive.

Walton was then forced in to his first save of the afternoon in the 56th minute, Puscas getting in behind Williams from Swift’s pass but lacking any power to the shot that was easily saved.

No sooner had Reading sent on a third striker, and abandoned their three-man defence, than they were handed a lifeline.

It was no surprise it was Swift who got it, curling in from the edge of the box after Travis had earlier done well to deny an Ejaria strike.

The hosts were now in the ascendancy and playing with more freedom. Ejaria was coming more in to the game as he danced his way to the edge of the box before his shot was blocked by Williams. Yiadom kept the ball alive with a cross from the right which substitute Yakou Meite blazed over.

With the tide turning, Lewis Holtby was brought on for his debut before Bradley Johnson was also introduced.

Danny Graham was the third Rovers substitute brought on and he almost scored with his first touch as he headed over Downing’s corner.

And Holtby should have had his first in Rovers colours, only to blaze over from eight yards out after being teed up by Dack.

Those missed chances almost came to haunt them as Yiadom again advanced down the right, but after cutting in field, couldn’t hit the target with his effort.

The substitutes were really get in on the act for Rovers as Johnson drew a save out of Cabral with his low strike with seven minutes remaining.

The way Rovers managed the game in the late stages was particularly impressive, keeping the ball to good effect, with one excellent move ending with Johnson drawing a save out of Cabral.

There was one late chance for the hosts, in the fourth of five added minutes, with Walton hanging on to a Tyler Blackett header from a Swift free kick.

Reading: Cabral, Moore, Morrison (Blackett, 65), McIntyre (Meite, 57), Yiadom, Obita, Swift, Ejaria, Gomes, Puscas, Joao (Boye, 87)

Subs: Rinomhota, Virginia, Adam, Richards

Rovers: Walton, Bennett, Lenihan, Williams, Cunningham, Travis, Evans (Johnson, 73), Downing, Dack, Armstrong (Holtby, 70), Gallagher (Graham, 77)

Subs: Leutwiler, Nyambe, Bell, Buckley