League leaders Rangers prevailed in the season's first Old Firm derby to move four points clear of Celtic.
Steven Naismith's spectacular strike put the hosts ahead but Gary Hooper equalised with a tidy finish.
Badr El Kaddouri's drive slipped through the grasp of goalkeeper Allan McGregor to give Celtic the lead.
Goals by Nikica Jelavic and Kyle Lafferty turned the match in Rangers' favour, Celtic's Charlie Mulgrew was sent off and Naismith netted late on.
Rangers remain unbeaten in the Scottish Premier League with manager Ally McCoist winning his first Glasgow derby in charge.
Both sides made two changes, Jelavic and Sasa Papac replacing Juan Manuel Ortiz and Kirk Broadfoot for the home side and Joe Ledley and James Forrest making way for El Kaddouri and captain Scott Brown in the Celtic line-up.
Naismith had been Rangers' brightest player in the opening quarter and it was his first Old Firm goal that broke the deadlock after a quiet spell of play.
Kelvin Wilson's clearance from Lafferty's cross went straight to Naismith in the right-hand corner of the box and the Scotland international's controlled volley flew into the top corner.
Georgios Samaras, who earlier cleared the crossbar with a shot, blocked team-mate Hooper's stinging drive and because the Greek was in an offside position, the attack broke down.
But Hooper was not to be denied 11 minutes before the break as he beat the offside trap to latch on to Brown's defence-splitting pass and beat McGregor with a superb finish from the inside-left channel.
And, four minutes before the break, McGregor stooped to make a seemingly routine save from El Kaddouri's drilled shot but contrived to let the ball squeeze through his gloves and over the line.
Steven Davis came within inches of levelling straight after the turnaround with a shot from outside the box that rivalled Naismith's in quality and canoned off the top of Celtic's crossbar.
Lafferty volleyed into the net after finishing off an intricate passing move but the offside flag cut short Rangers' celebrations.
But the pressure finally paid off when Jelavic peeled off his marker and bulleted a downward header past goalkeeper Fraser Forster.
Lafferty squandered two excellent opportunities to edge Rangers ahead, heading over from Gregg Wylde's cross before dinking a volley wide after El Kaddouri's mistake, the forward missing the target on both occasions.
Celtic were then foiled by the post as Glenn Loovens' header from Mulgrew's corner clattered off the upright.
Rangers moved upfield and Wylde's centre caused havoc in the Celtic defence with Jelavic's header and then Lafferty's shot blocked before the latter finally found the net with his left foot, the former Burnley man scoring in an Old Firm match for the first time.
Mulgrew had earlier been booked for catching Naismith and the versatile player was dismissed after his challenge on Davis was punished with a second yellow card.
Dorin Goian's shot at the back post lacked accuracy and Forster blocked another effort by Naismith as Rangers searched for a more comfortable lead.
And Naismith made sure of victory in injury time when he darted into the box to crisply volley Davis's centre low past Forster.