In an ill-tempered match, Rangers emerged victorious thanks to a Peter Lovenkrands goal.
This was the striker's 11th goal of the season as he maintained his scoring form of recent weeks.
There was further misery for Hearts when substitute Saulius Mikoliunas was red-carded near the end for a bad tackle on Barry Ferguson.
Hearts were prepared to concede free-kicks whenever Rangers threatened. The home side nearly took the lead when Robert Malcolm's free-kick was met by Hamed Namouchi, but Craig Gordon superbly touched his header over.
From Paul Hartley's cross Andrew Webster headed over from close range as Rangers keeper Ronald Waterreus hesitated on his line.
Lovenkrands curled in a clever cross which Marvin Andrews appeared to block on the line, allowing Gordon to gather.
The Hearts keeper then blocked a Chris Burke header before Rangers took the lead.
Namouchi's header from Malcolm's free-kick was partially cleared but fell to Lovenkrands, who prodded the ball home at the near post.
Rangers continued to press forward at the start of the second half, and Lovenkrands headed over a Burke cross when he should have done better.
Burke was playing superbly on the wing, and when another dangerous cross was cleared, Namouchi pulled his shot wide.
Hearts started to come more into the match towards the end, but the Rangers rearguard stood firm.
The visitors' cause was not helped when Saulius Mikoliunas was ordered off. The substitute had been fouled just before the incident, but the red mist descended as he crudely brought down Ferguson from behind.
Hearts look a pale shadow of the side that started the season so well, but even so they are still 11 points off the Ibrox side.