Hearts condemned Rangers to their first defeat of the season with a superb performance at Tynecastle.
The capital side won the midfield battle and grabbed three long-range goals to humble Walter Smith's side, who were punished for omitting big names Barry Ferguson and Jean-Claude Darcheville from their starting line-up.
However, the Gers threatened first when Kevin Thomson's high ball found Steven Whittaker, but Christophe Berra got in a vital block for Hearts.
The home side were clearly up for the challenge and when Carlos Cuellar tackled Christian Nade, it was Andrius Ksanavicius who reacted quickest to fire in a low 20-yarder that was brilliantly tipped around the post by Allan McGregor.
However, the Rangers keeper was helpless when Hearts grabbed a 13th minute lead. Cuellar's careless clearance fell to Andrew Driver and his angled drive from the edge of the box flew into the top corner.
And Rangers looked shell-shocked when Hearts doubled their lead after 27 minutes.
The visitors couldn't get Michael Stewart's corner properly cleared and Ibrahim Tall swivelled at the edge of the box to loop a deflected shot over the helpless McGregor.
Rangers were rattled and DaMarcus Beasley was lucky not to see red when he pushed Robbie Neilson to the ground. Incredibly referee Mike McCurry also booked the Jambos player, who looked innocent.
There was enough concern in the Rangers ranks to introduce Ferguson and Darcheville for the second half.
And the benefit was almost immediate as Ferguson forced Neilson into a rash challenge to win Rangers a 48th minute penalty that Daniel Cousin coolly tapped home.
But Hearts restored their advantage with another penalty after 68 minutes and it was a dubious award.
Alan Hutton looked to have won the ball with his challenge on Kestutis Ivaskevicius, but McCurry pointed to the spot and Michael Stewart made no mistake.
That put the game beyond Rangers, but they still had time for another consolation goal when Beasley took Darcheville's pass to slot home from a tight angle.