An early Nacho Novo strike gave Rangers the victory they needed to delay Celtic's SPL title party and leave St Mirren deep in relegation trouble.
Nacho Novo gave Rangers an early lead at St Mirren Park
Novo pounced to fire home after Rangers-bound Kirk Broadfoot collided with his own goalkeeper, Chris Smith, going for a high ball in the area.
Rangers goalkeeper Allan McGregor saved well to deny Ian Maxwell an equaliser.
Kris Boyd squandered a couple of chances for Rangers before St Mirren dominated the second half.
But Gus MacPherson's side could not find their goalscoring touch and remain just four points clear of bottom side Dunfermline.
John Sutton had returned to their starting line-up following his midweek equaliser against Hibernian, with the injured Craig Molloy missing out.
Defeat for Rangers would have handed the title to Celtic, but now their city rivals must wait at least until 21 April.
Walter Smith had freshened up his Rangers side after last weekend's disappointing draw with Inverness, Ugo Ehiogu and Chris Burke returning in place of Dado Prso and Ian Murray.
It was a painful start of the match in more ways than one for Broadfoot, who has signed a pre-contract agreement to join Rangers in the summer.
The defender was clattered from behind by his own goalkeeper challenging Boyd for a high Charlie Adam ball into the St Mirren penalty box.
And, as it fell to Novo, the striker thumped the ball home from 10 yards off the legs of John Potter on the goalline.
The Buddies almost struck back immediately, Ian Maxwell rising above the Rangers defence to head a Richard Brittain free-kick towards goal.
But goalkeeper Allan McGregor parried the ball to safety.
Kirk Broadfoot collided with Chris Smith for Rangers' goal
Maxwell was forced out of the action clutching a hamstring after 17 minutes, with Eddie Malone coming into the home defence.
A poor back-header from Broadfoot allowed Boyd a sight at goal on the edge of the box, but Rangers' top scorer blasted wildly wide and soon after fired weakly straight at Smith following a sweeping move.
Hugh Murray had an opportunity to equalise when McGregor failed to hold a Malone free-kick.
But the goalkeeper recovered to block the shot and the ball was hooked clear.
David Van Zanten sent a low drive a few feet wide and a Broadfoot header dipped a couple of feet over as St Mirren ended the first half on the front foot.
The home side were first to threaten after the break, Stewart Kean stealing in at the front post but sending his toe-poke wide.
A lovely jinking run out of defence by Broadfoot ended with the defender setting up Kean 20 yards out, but the striker's curling effort was just wide with McGregor beaten.
And substitute Billy Mehmet turned a snapshot over from the edge of the box as second-top Rangers survived to take the points.
St Mirren: Smith, van Zanten, Potter, Broadfoot, Maxwell (Malone 17), Brittain (Corcoran 62), Murray, Brady, Reid (Mehmet 75), Kean, Sutton.
Subs Not Used: Hinchcliffe, Mackay, McGinn, Lawson.
Rangers: McGregor, Hutton, Ehiogu, Weir, Papac, Burke (Prso 65), Hemdani, Ferguson, Adam, Boyd (Thomson 90), Novo.
Subs Not Used: Klos, Svensson, Rae, Lennon, Shinnie.
Booked: Boyd, Novo.
Goal: Novo 4.
Ref: C Richmond