Rovers were left frustrated as a late strike from Nelson Oliveira won all three points for relegation-threatened Reading at a chilly Madejski Stadium
The Portuguese frontman curled home from outside the box for the Royals, who were second best throughout the encounter.
It came just moments after Amari’i Bell bagged his first goal for the club, and just when Rovers thought they’d take something back from Berkshire.
Rovers largely bossed the game throughout, but found themselves a goal down at the break before Bell’s late leveller, prior to Oliveira’s winner with just four minutes remaining.
Tony Mowbray named four changes for the clash against the Royals, with Bell, Corry Evans, Craig Conway and Ben Brereton all coming into the team.
Derrick Williams, Harrison Reed, Danny Graham and Bradley Dack all dropped to the bench and were available for Mowbray is needed.
Rovers started the game well, and a breakaway involving Brereton and Armstrong saw the latter force Emi Martinez into a smart save high up to the goalkeeper’s left side.
At the other end, home loanee Oliveira nearly caught David Raya out with an attempted lob from distance, but his attempt looped just over the upright midway through the first half.
The next opportunity came the way of Andy Yiadom, who lashed towards goal and kept Raya busy, before lovely play between Bell and Conway saw the Scot eventually fire into the side netting.
Just a moment before half time and the dangerous Armstrong almost grabbed the opener, but after cutting in on his left foot, his curled attempt floated just over.
And a minute later Armstrong snuck in behind the home backline but saw Martinez in his way before the Royals took the lead through Swift.
After good play from Yiadom down the right, his pull back found Swift, who took a touch before beating Raya and putting the ball into the bottom corner to give Reading the lead going into the break.
It was a bitter blow for Rovers, who had bossed the first 45 minutes, but had nothing to show for their efforts.
The Berkshire side came out of the traps quickest for the second half, with substitute Yakou Meite forcing Raya into a comfortable save.
The returning Brereton had the next opportunity of the game, but after excellently bringing down Conway’s pinpoint cross, the young frontman curled over the upright under pressure from home skipper Liam Moore.
Dack made his entrance just before the hour, with Richie Smallwood being replaced in Mowbray’s first change of the evening, which resulted in reverting to the tried and tested 4-2-3-1 system, with Evans and Lewis Travis holding the two central midfield roles.
Meite had a glorious chance to make it 2-0 and kill the game with 24 minutes left, but after beating the offside trap, the Ivorian lashed wide with just Raya to beat.
Reading continued to press for a second of the night, with Tyler Blackett letting fly from range, his strike being deflected over by Jack Rodwell.
From the resulting corner, Meite sent a header over the upright before Rovers forced an equaliser through Bell’s first goal for the club.
Lovely play from substitute Joe Rothwell fed the rampaging left back, and after taking a touch, his drive flew into the back of the net despite Martinez getting a touch on the effort.
But just when it looked like Rovers would head back north with a point, the man in the mask Oliveira caught the visitors out on the counter, curling into the bottom corner from 20 yards.
A goalmouth scramble at the death saw a dramatic late equaliser evade Rovers, who can count themselves unlucky not to take a point at least from the clash.
Reading: Martinez, Yiadom, Moore (c), Swift, Aluko (Meite, 46), Ejaria, Miazga, Oliveira (Bodvarsson, 90), Blackett, Richards, Kelly (Baker, 80).
Unused substitutes: Walker, Gunter, Harriott, Barrow.
Goals: Swift, 45, Oliveira, 86
Booked: Ejaria, 40
Rovers: Raya, Bennett, Rodwell, Mulgrew (c), Bell, Smallwood (Dack, 57), Evans, Travis, Conway (Graham, 74), Brereton (Rothwell, 68), Armstrong.
Unused substitutes: Leutwiler, Nyambe, Williams, Reed.
Goal: Bell, 82
Booked: Brereton, 42
Referee: Stephen Martin.
Attendance: 11,271 (635 away)