Lafferty pounced in the opening minutes before El-Hadji Diouf was handed an earlier than anticipated debut following his transfer deadline-day move.
The win allowed Rangers to move to within five points of SPL leaders Celtic, with two games in hands over their rivals.
New signings Diouf, David Healy and Kyle Bartley were all named on the bench for Rangers.
Nikica Jelavic missed out with a groin injury and Steven Naismith and Neil Alexander were dropped to the bench, as Allan McGregor, Vladimir Weiss and Jamie Ness all started.
Hearts drafted Stephen Elliot, Eggert Jonsson and Adrian Mrowiec into the side as they looked for a repeat of their win over the Scottish champions at Tynecastle last month.
But it was Rangers who enjoyed the best possible start to the game when they took the lead with just four minutes on the clock.
Steven Whittaker flighted a cross into the box where Lafferty was waiting to volley past the helpless Marian Kello from 15 yards.
Lee McCulloch then saw his header flash wide of the upright after collecting a long ball from Madjid Bougherra.
It proved to be McCulloch's last real involvement in the game when he was forced out of the action after just 20 minutes and replaced by Diouf, who received a rapturous reception from the home fans.
Hearts could have been back on level terms when Craig Thomson's free-kick was met by Marius Zaliukas at the back post and his header appeared netbound before McGregor produced a superb save to tip over.
Diouf earned himself a lecture from referee Brian Winter for a challenge on Zaliukas seconds after the on-loan Blackburn man was denied a free-kick for a foul by the same player.
The Ibrox faithful were then furious when Ian Black - already unpopular because of his tackle on Jelavic earlier in the season - escaped with a caution for a reckless challenge on Diouf as the game became more heated.
Lafferty failed to claim his second of the match when he nodded just over from close-range from a Weiss free-kick as Rangers headed into the interval with a slim advantage.
Black was withdrawn for Ryan Stevenson - who netted the winner the last time the sides met - as Hearts made their first change at the break.
Rangers could have doubled their advantage shortly after the restart when Bougherra exchanged a one-two with Steven Davis only to see his volley blocked at the near post by Kello.
Having already lost one player to injury, there was concern for the home side when Weiss went to ground clutching his ankle, but he was quickly able to return to the action.
Weiss made way for Naismith with 20 minutes to go before Hearts threw Andy Driver and Gary Glen into the action as they chased a late leveller.
Rangers had dominated most of the possession in the second half but struggled to break down a stubborn Hearts defence, with chances few and far between from both sides.
With time fast running out, Thomson tried his luck with an ambitious effort from distance, but McGregor was never troubled.
Rangers had the ball in the back of the net in the final minute when Davis followed up with the rebound after the goalkeeper had parried a Diouf shot, but the effort was disallowed for offside.