Nikica Jelavic struck twice as Rangers picked up maximum points against St Johnstone at McDiarmid Park.
The Croatian striker stretched to divert home a shot from Sone Aluko to give the visitors a half-time lead.
Carlos Bocanegra knocked in an unfortunate own goal to level the game midway through the second half
But Jelavic was in the right place to tap in his 17th goal of the season after Saints' Murray Davidson had made a mess of a defensive header.
All eyes were on Francisco Sandaza, with the Saints striker turning down the opportunity to agree a pre-contract deal with Rangers , according to his manager Steve Lomas.
However, it was Jelavic who grabbed the headlines with a predatory double.
Sandaza was impressive when he drifted past three opponents and slipped a pass through to Marcus Haber but the Canadian had edged offside before finding the net with his shot from the edge of the penalty area.
Rangers captain Steven Davis sliced the home defence open with a fantastic pass to David Healy but the Northern Ireland striker could not find the target from 18 yards when one-on-one with Saints keeper Peter Enckelman.
But Rangers were ahead on 24 minutes and Healy was involved, although he did not get a touch on the ball.
From a quickly taken free-kick near the centre spot, Steven Davis fed Aluko and, with the home defence backing off, the midfielder made his way into the penalty area to fire in a deflected shot that a stretching Jelavic poked home from six yards.
Lomas launched a furious protest on the sidelines, perhaps suggesting the free-kick was taken too far away from the initial offence or that Healy was in an offside position and obstructing Enckelman's view.
He also exchanged views with opposite number Ally McCoist, earning both managers a talking to from referee Craig Thomson.
Saints lost their discipline for a spell after going behind and Enckelman made a good save with his feet to deny Jelavic shortly after gathering a dipping free-kick from Aluko.
On 39 minutes, Liam Craig was given a glimpse of goal from the left edge of the penalty box but his drilled shot was saved comfortably by Rangers keeper Neil Alexander.
Craig then whipped in a wonderful cross to find David Robertson but the former Dundee United midfielder could not trouble Allan McGregor's deputy with his header.
With half-time approaching, St Johnstone skipper Jody Morris was caught dawdling by Maurice Edu, presenting Healy with a shooting opportunity, but the striker's effort was blocked by David McCracken.
The second half was four minutes old when Aluko found Davis on the left side of the penalty box, with Morris doing well to get a foot in and divert the midfielder's shot out for a corner.
From Davis's subsequent delivery, Dorin Goian powered in a header that was nodded clear by Robertson on the goal-line.
Soon after, St Johnstone fans were howling for the already booked Goian to be sent off following a cynical block on Sandaza by the Romanian, but Thomson did no more than award a free-kick.
The home side had laboured in the final third until they snatched a rather fortuitous equaliser on 68 minutes.
A Craig cross found Haber at the back post and the forward's header struck the chest of Bocanegra, diverting the ball past a bamboozled Alexander.
Sandaza then provided a great pass for Robertson to fizz a first-time shot inches wide of the post from 18 yards.
Rangers responded with a fierce, angled drive from Healy that Enckelman could only parry across goal and Lee Wallace, under pressure from Dave MacKay, completely mistimed his attempted header in front of an empty net.
And the visitors were in front again when Jelavic was in the right place to tap in after an errant defensive header from Murray Davidson had forced Enckelman to tip the ball against his crossbar.
Edu and Davis both tried their luck with shots as Rangers pressed but the visitors did not need another goal to make sure of the points.
Live Text Commentary
Full Time The match has reached full-time.90:00 +2:28
Steven Anderson concedes a free kick for a foul on Juanma Ortiz. Kyle Bartley restarts play with the free kick.90:00 +1:51
Maurice Edu takes a shot. Blocked by Steven Anderson.87:49
The free kick is swung in left-footed by Liam Craig, Dorin Goian makes a clearance.87:49 Booking
Booking Salim Kerkar receives a yellow card.87:39
Free kick awarded for a foul by Salim Kerkar on David MacKay.85:07
Steven Anderson gives away a free kick for an unfair challenge on Sone Aluko. Direct free kick taken by Steven Davis.83:14
Shot from just outside the penalty area by Steven Davis misses to the left of the target.82:54
Maurice Edu takes a shot. Blocked by Liam Craig.81:49 Substitution
Substitution Juanma Ortiz replaces David Healy.81:32 Substitution
Substitution (St Johnstone) makes a substitution, with Cillian Sheridan coming on for David Robertson.80:38 Goal scored
Goal! - Nikica Jelavic - St J'stone 1 - 2 Rangers Nikica Jelavic gets on the score sheet with a goal from inside the six-yard box to the bottom right corner of the goal. St Johnstone 1-2 Rangers.79:31
Direct free kick taken by Sone Aluko.79:31 Substitution
Substitution (Rangers) makes a substitution, with Salim Kerkar coming on for Lee Wallace.79:31
Free kick awarded for an unfair challenge on Nikica Jelavic by Steven Anderson.78:22
The offside flag is raised against David Robertson. Dorin Goian restarts play with the free kick.77:00
Effort on goal by Kyle Bartley from just outside the area goes harmlessly over the target.76:40
David Healy takes a shot. Save by Peter Enckelman.73:22
Maurice Edu concedes a free kick for a foul on Jody Morris. Steven Anderson takes the free kick.72:58
Shot from just outside the box by Liam Craig goes over the target.
David MacKay takes the direct free kick.72:12 Booking
Booking The referee cautions Maurice Edu for unsporting behaviour.72:06
Maurice Edu gives away a free kick for an unfair challenge on Francisco Sandaza.70:52
Corner taken by Jody Morris from the left by-line, clearance by Carlos Bocanegra.69:46
Unfair challenge on Lee Wallace by Marcus Haber results in a free kick. Neil Alexander takes the free kick.68:48
Liam Craig concedes a free kick for a foul on Kyle Bartley. Direct free kick taken by Kyle Bartley.68:32
David Robertson produces a left-footed shot from the edge of the area and misses to the left of the goal.67:46 Goal scored
Goal! - Carlos Bocanegra - St J'stone 1 - 1 Rangers Carlos Bocanegra puts the ball into his own net. St Johnstone 1-1 Rangers.66:59
Marcus Haber takes a shot.63:37
The assistant referee flags for offside against Francisco Sandaza. Neil Alexander takes the free kick.62:37
Maurice Edu gives away a free kick for an unfair challenge on David Robertson. Free kick crossed by Liam Craig, Sasa Papac makes a clearance.60:46
Foul by Marcus Haber on Steven Davis, free kick awarded. Carlos Bocanegra takes the direct free kick.60:04
Corner crossed in by Lee Wallace, clearance made by Callum Davidson.59:26
Corner taken left-footed by Lee Wallace, Francisco Sandaza manages to make a clearance.58:10
David Healy challenges David McCracken unfairly and gives away a free kick. Liam Craig crosses the ball from the free kick left-footed from left channel, clearance made by Dorin Goian.57:13
Dorin Goian challenges Francisco Sandaza unfairly and gives away a free kick. Free kick taken by Callum Davidson.54:46
The assistant referee flags for offside against Nikica Jelavic. Peter Enckelman takes the indirect free kick.52:41
Nikica Jelavic has an effort at goal from deep inside the area missing to the left of the target.50:54
Liam Craig concedes a free kick for a foul on Maurice Edu. Maurice Edu takes the free kick.50:26
Effort on goal by Sone Aluko from just inside the penalty area goes over the target.49:35
Corner taken by Steven Davis, Dorin Goian takes a shot. Blocked by David Robertson.49:21
Shot by Steven Davis. Blocked by Jody Morris.48:44
Free kick awarded for a foul by Nikica Jelavic on David McCracken. Free kick taken by David McCracken.47:33
The offside flag is raised against Francisco Sandaza. Sasa Papac takes the free kick.45:01
The second half begins.45:00 +2:06 Half time
Half Time The referee blows for half time.44:41
Shot by David Healy. Blocked by Steven Anderson.41:11
Headed effort from inside the area by David Robertson misses to the left of the target.38:39
Liam Craig takes a shot. Neil Alexander makes a comfortable save.37:11
Nikica Jelavic takes a shot. Peter Enckelman makes a fantastic save.35:20
Free kick awarded for an unfair challenge on David Healy by Steven Anderson. Direct effort from the free kick comes in from Sone Aluko, save by Peter Enckelman.34:29
Free kick awarded for an unfair challenge on Murray Davidson by Maurice Edu. David Robertson takes the direct free kick.31:05
Free kick awarded for an unfair challenge on Nikica Jelavic by Steven Anderson. David Healy shoots direct from the free kick, save by Peter Enckelman.26:58
The referee blows for offside. Neil Alexander restarts play with the free kick.26:31
Free kick awarded for a foul by David Healy on Jody Morris. David McCracken takes the direct free kick.24:04 Booking
Booking Jody Morris is shown a yellow card for dissent.23:04
Assist on the goal came from Sone Aluko.23:04 Goal scored
Goal! - Nikica Jelavic - St J'stone 0 - 1 Rangers A goal is scored by Nikica Jelavic from inside the six-yard box to the bottom left corner of the goal. St Johnstone 0-1 Rangers.22:47
Sone Aluko takes a shot.22:21
Murray Davidson gives away a free kick for an unfair challenge on David Healy. Carlos Bocanegra takes the direct free kick.21:51
Headed from the edge of the area by Nikica Jelavic goes wide of the left-hand post.16:46
David Healy has an effort at goal from just inside the box that misses to the right of the goal.14:38
Nikica Jelavic gives away a free kick for an unfair challenge on Steven Anderson. Peter Enckelman takes the direct free kick.13:38
Callum Davidson crosses the ball in from the free kick, Neil Alexander makes a comfortable save.13:38 Booking
Booking Dorin Goian is given a yellow card.13:25
Free kick awarded for a foul by Dorin Goian on Murray Davidson.12:44
Marcus Haber is ruled offside. Free kick taken by Neil Alexander.11:24
Free kick awarded for an unfair challenge on Nikica Jelavic by David McCracken. Free kick taken by Maurice Edu.8:28
David Robertson produces a left-footed shot from the edge of the area and misses to the left of the goal.7:57
Sasa Papac gives away a free kick for an unfair challenge on Marcus Haber. Free kick crossed left-footed by Liam Craig.4:37
Liam Craig delivers the ball.2:04
Kyle Bartley challenges Callum Davidson unfairly and gives away a free kick. Direct free kick taken by Callum Davidson.1:20
Francisco Sandaza is caught offside. Carlos Bocanegra takes the indirect free kick.0:29
Unfair challenge on Steven Davis by Murray Davidson results in a free kick. Free kick taken by Steven Davis.0:00
The game kicks-off.
Live data and text provided by our data suppliers