Goals by Jamie Murphy and Russell Martin consigned Hearts to defeat at Ibrox as Rangers continued their impressive form under manager Graeme Murty.
The home side created a plethora of scoring chances during the 90 minutes and, but for the outstanding Tynecastle goalkeeper Jon McLaughlin, would have won by a greater margin. Murphy struck the opener five minutes before the interval with a composed finish after dribbling past three opponents inside the penalty box. Martin then prodded home at the back post on 88 minutes to complete the victory.
Hearts arrived in Glasgow with only one defeat in their last 16 matches but had to do without Don Cowie and David Milinkovic, who didn't make the squad. Teenager Harry Cochrane returned to the starting line-up after injury. Rangers have been on a steady incline since appointing Murty manager, underlined by six victories from their previous seven fixtures.
Visiting goalkeeper McLaughlin was in action almost immediately. He had to save from Sean Goss, Greg Docherty and Alfredo Morelos during what was a strong opening onslaught by those in blue. Hearts steadied themselves and, on 18 minutes, Kyle Lafferty collected Ross Callachan's long ball and aimed an effort at the top corner from 20 yards. The Rangers goalkeeper Wes Foderingham was equal to the task.
Callachan then took matters into his own hands and forced Foderingham into another diving save, again from outside the penalty area. The match was open and entertaining, with play swinging from one end to the other. Morelos wasted a good opportunity to break the deadlock as the half-hour mark approached when he headed wide unmarked from full-back Declan John's clipped cross.
Rangers were eventually going to take one of their opportunities, and so it proved five minutes from the interval. Murphy collected Docherty's through ball and dribbled past Aaron Hughes, John Souttar and the despairing dive of McLaughlin. Hearts defenders scrambled to recover behind their goalkeeper but the winger calmly slotted the ball into the net.
Craig Levein sensibly replaced midfielder Joaquim Adao with Prince Buaben at the interval. Adao, on loan from FC Sion, was booked in the 19th minute and had fouled a further twice thereafter. He was replaced to avoid spending the second half walking a red-card tightrope.
Rangers went in search of a second goal when play restarted, and they would have got it within minutes had Josh Windass not side-footed Morelos' cross from the left into the Copland Road Stand. McLaughlin then produced a double save to thwart Docherty and Morelos. Not for the first time this season, the goalkeeper was arguably Hearts' most important player.
This was further emphasised on the hour mark when Rangers broke at pace. Morelos slipped a ball through to Windass, who sprinted through to go one-against-one with McLaughlin. The midfielder's attempted finish was deflected as the keeper emerged to spread himself. Moments later, when Morelos exchanged passes with Daniel Candeias to shoot, McLaughlin saved again low to his right.
Steven Naismith replaced Cochrane to a chorus of boos from the home support relating to his Ibrox exit in 2012. His introduction was intended to give Hearts more attacking threat, however Rangers remained in the ascendancy. McLaughlin parried another attempt by Murphy and also stopped a free-kick by Windass before the victory was completed by Martin.
The centre-back found himself at the back post to slot home Candeias' teasing cross with only two minutes of regulation time remaining.
Rangers (4-2-3-1): Foderingham; Tavernier, Bates, Martin, John; Docherty (Holt 82), Goss; Candeias, Windass, Murphy; Morelos (Cummings 75).
Unused subs: Alnwick, Miller, Herrera, Halliday, Alves.
Hearts (3-5-1-1): McLaughlin; Souttar, Hughes, Berra; M Smith, Cochrane (Naismith 73), Adao (Prince 46), Callachan, Mitchell; Henderson (McDonald 60); Lafferty.
Unused subs: Hamilton, Randall, Godinho, Irving.
Referee: John Beaton.