Celtic saw their lead at the top of the table slashed to one point as first-half goals by Nacho Novo from the penalty spot and Dado Prso eased Rangers home in this most explosive of fixtures.
Martin O'Neill's side ended the match with nine men. Alan Thompson was sent off in the 38th minute for an alleged head-butt on Peter Lovenkrands, and Chris Sutton went early in the second half for deliberate handball after being booked in the first period.
Other players including Novo and Henri Camara might well have joined them as referee Kenny Clark struggled to keep a lid on the simmering passions and feuds which broke out as the match progressed.
It all started quietly enough with Celtic holding the upper-hand in the opening minutes. Sutton hit the crossbar but John Hartson had already been adjudged to have fouled Gregory Vignal.
In almost their first attack, Rangers took the lead in the 15th minute. Bobo Balde headed out a ball which he might well have left to Magnus Hedman, who was again deputising for David Marshall. Fernando Ricksen quickly found Novo, who was brought down by Joos Valgaeren in the box.
It looked a clear-cut penalty, and Novo made no mistake from the spot shooting low past Hedman.
Novo caused problems for his own team at the other end, but Jean-Alain Boumsong cleared the danger.
Marvin Andrews then fouled Sutton, but Camara could only guide his header wide from Stilian Petrov's inswinging free-kick.
Andrews timed his tackle to perfection as Hartson advanced into the box and Stanislav Varga headed wide as Celtic pressed.
However, it was Rangers who went 2-0 ahead minutes later. Sutton fouled Alex Rae, an offence for which he was booked, and Ricksen curled in a superb free-kick, which Prso glanced home at the near post with a superb hearer.
Shortly afterwards, a crude Lovenkrands challenge on Jackie McNamara sparked mayhem.
Thompson got involved and appeared to lower his head in to Lovenkrands' face. Rae and Neil Lennon were booked as feuds broke out everywhere.
Eventually, Lovenkrands was correctly booked and Thompson was dismissed for his challenge.
Stefan Klos made a good save from Balde before the match erupted again. Vignal fouled Camara and the Celtic striker, who had earlier been booked, lashed out at the full-back as he lay on the ground.
How the referee and linesman failed to notice the incident was incredible, but half-time must have arrived none too soon for the officials.
At the start of the second half, Hedman made a great save from Prso after Hamed Namouchi had dispossessed McNamara before Sutton foolishly got himself sent off for deliberate handball in the 55th minute.
Even though Celtic were reduced to nine men for the last 35 minutes, Petrov produced a marvellous save from Klos.
Some magnificent saves by Hedman and slack finishing by Novo and Namouchi in particular, prevented Rangers adding to their lead, though with a two man and two-goal advantage, the Ibrox side were content to play out time.
At the end of the game, O'Neill wrapped his arms around Lennon's shoulders and defiantly saluted the Celtic fans at their end of the ground.
It was a provocative gesture which infuriated the Rangers fans, but showed the esteem the Celtic manager has for his player.
MAN OF THE MATCH: Jean-Alain Boumsong (Rangers) – The Frenchman has been linked with a move to Newcastle this week and produced an almost faultless display to foil the visitors.