St. Mirren 1 Rangers 2
An early strike by top scorer Kris Boyd was quickly followed by a header from Maurice Edu that put the Ibrox side in control.
However a goal by Andy Dorman just before the hour mark brought Saints back into the game but, despite some late pressure, the home team could not find their way through the Rangers defence.
The match started slowly with injuries disrupting play and DaMarcus Beasley was stretchered off after 15 minutes.
By that time Rangers were one up thanks to a well-constructed goal.
Pedro Mendes' pass inside the full-back found Sasa Papac whose cut-back was steered into the net by Boyd.
The visitors should have added to their lead when home keeper Mark Howard fumbled a Madjid Bougherra's cross but, from Nacho Novo's pass, Boyd mis-hit his shot.
Rangers added a second when Edu rose above Stephen McGinn at the near post to head home a Mendes corner and claim his first goal for Rangers.
Papac was next to limp off after a late challenge by Craig Dargo.
Just before half-time Howard came to Saints' rescue with a good save from Boyd's header.
Early in the second half Boyd thought he had won a penalty when his header appeared to strike a St Mirren defender on the hand but his claims were waved away.
Rangers keeper Neil Alexander held Dargo's volley comfortably before Saints reduced the deficit in the 56th minute.
In a swift break Dargo's pass found Dorman who slid the ball home off the inside of the post.
Rangers were rattled but, despite aerial bombardment, the home attack failed to create a clear-cut chance.
In a counter-attack, Boyd's pass released Novo but the striker's shot was palmed away by Howard.