A strong performance at Ibrox wasn't enough for Saints to take anything as the Buddies were edged out by Rangers. Mohamed Diomande gave Rangers an early lead, but Alex Gogic levelled with a first-half header. Toyosi Olusanya saw a goal disallowed in the second-half before Vaclav Cerny gave the hosts all three points.
Manager Stephen Robinson made two changes to the side that lost away to Hearts last weekend. Kevin Van Veen missed out with a foot injury that saw him replaced by James Scott. Elvis Bwomono also came into the starting lineup in place of Oisin Smyth. Conor McMenamin was back in the squad for the first time this season after recovering from a tendon injury with the Northern Irish man taking up a place on the bench, while youth academy prospect Callum Penman was also included in the 20 man squad.
After a bright start, Saints should have taken the lead inside the opening 10 minutes when Killian Phillips sent Toyosi Olusanya one-on-one with Jack Butland. The forward raced into the box, but sent his effort wide of the far post.
It was Rangers who would strike first when Mohamed Diomande put the hosts in front on 13 minutes. A powerful strike from Nicolas Raskin on the edge of the area took a deflection and Ellery Balcombe could only push it into the path of Diomande who knocked home from close range.
A Phillips clearance almost gave Olusanya another opportunity to go through on the Rangers goal, but the forward couldn't manage to bring the ball under control which allowed Leon Balogun to get ahead of him and clear.
Saints would deservedly draw level on 25 minutes. Captain Mark O'Hara swung in a super delivery to the head of Gogic who rose above Robin Propper and powered beyond Butland to make it 1-1.
Alex Gogic celebrates his goal against Rangers (Image: Allan Picken)
In between a Greg Kiltie chance from 20 yards that flashed wide, Neraysho Kasanwirjo hit the bar for Rangers, while a Cerny cross to the back post evaded the Saints backline to find Nedim Bajrami, but he could only find the side net.
With the scores level at half-time, the hosts made a change at the interval when Cyriel Dessers came on to replace Hamza Igamane.
Saints thought they had gone ahead five minutes after the restart when Kiltie's ball sent Olusanya scuttling clear. Olusanya finished nicely through the legs of Butland only for the offside flag to come. A VAR check showed the forward was agonisingly centimetres offside. A few minutes later, the Buddies felt they should have had a penalty when Olusanya went down in the box. But the referee, who had initially played advantage after Kiltie had been fouled by Nicolas Raskin, pulled it back for a free-kick which O'Hara would send over the bar.
The game was finely in the balance, swinging end-to-end. Ellery Balcombe pulled off a big save on 57 minutes when he touched a Dessers header over the bar. Two minutes later, brilliant strength from Olusanya saw him rob Propper on the touchline and force a good save from Butland at his near post.
Rangers took the lead for a second time with just over 20 minutes to play. A strong run by Dessers saw the substitute burst beyond the Saints defence to get to the byline before rolling back into the path of Cerny who rolled into the net from close range.
Balcombe denied Cerny his second of the match on 82 minutes when he made an outstanding save. The Rangers winger had all the time in the world to pick his spot but the Saints goalkeeper was down brilliantly to push away.
The Buddies would press for a second equaliser but just couldn't find the leveller that their performance merited. Despite the defeat, Saints will take heart from a much improved performance ahead of two home matches against St Johnstone and Ross County next week.
Full-Time: Rangers 2-1 St Mirren
St Mirren: Balcombe, Fraser, Gogic, Dunne, Bwomono (Mandron 79), Phillips, O'Hara (c) (Boyd-Munce 79), Tanser, Scott (McMenamin 62), Olusanya, Kiltie (Idowu 68)
Subs Not Used: Urminsky, Penman, Smyth, Adeniran, Ayunga
Rangers: Butland (c), Kasanwirjo, Propper (Tavernier 61), Balogun, Jefte, Raskin, Diomande, Barron (Sterling 85), Cerny (McCausland 89), Igamane (Dessers 46), Bajrami
Subs Not Used: Kelly, Dowell, Fraser, McKinnon, Lovelace
Referee: Calum Scott
Assistant Referee: Dougie Potter
Assistant Referee: Andy Milne
Fourth Official: Euan Anderson
VAR: Greg Aitken
Attendance: 48,859