Celtic skipper Scott Brown was shown a straight red card by referee Dougie McDonald in the 66th minute after wrestling with Kyle Lafferty, who escaped unpunished.
But, in the dying seconds, Edu, on for Lee McCulloch, slammed the ball in from close range to take the Light Blues 10 points clear of Celtic with a game in hand.
Robbie Keane recovered from his knee injury to make his Old Firm debut while Rangers keeper Allan McGregor was fit enough to take his place between the sticks following an attack after a night out last weekend.
Further edge was added to proceedings following a leak from the Parkhead club during the week in which they aired grievances at some decisions they felt had gone against them this season – including in the two previous matches against Rangers.
Referee Dougie McDonald was under increased pressure and the game kicked off in a poisonous atmosphere after Celtic fans disrupted a minute’s silence for former Rangers keeper Gerry Neef, who died earlier in the week.
Unsurprisingly, the game got off to a frantic start.
McGregor was called upon to make a good save from Keane with around 30 seconds on the clock, after Hoops striker Marc-Antoine Fortune had escaped past Sasa Papac down the right.
Moments later at the other end, Kris Boyd took a Steven Davis pass, rounded Hoops goalkeeper Artur Boruc but ran the ball too wide and failed to hit the target.
The tempo refused to subside as play swung mostly towards the Rangers goal. In the 17th minute, after Papac had fouled Diomansy Kamara 19 yards out with a wild swing, Keane chipped the free-kick over the bar – to the delight of the Rangers fans.
The home side suffered a blow when midfielder McCulloch caught his studs in the turf and limped off to be replaced by Edu.
Moments later the American drove the ball into the net from the edge of the box with his first touch but referee McDonald ruled the goal out for an infringement inside the area.
Just before the half-hour mark, Boyd sent Kenny Miller racing clear on goal but Boruc blocked the former Celtic player’s first shot then collected at the second attempt.
Celtic had to reshuffle moments later when Thomas Rogne pulled up and had to be replaced by Darren O’Dea.
Then McGregor made a great save from Keane’s volley after the ball broke to the Irishman on the edge of the box before Fortune drove wide after barging his way through the Ibrox defence.
Celtic had been the better side in the first half but Rangers displayed more purpose and power at the start of the second half.
After Light Blues’ right-back Steven Whittaker played the ball in to Boyd’s feet inside a packed Hoops’ penalty box, O’Dea had to make a saving tackle before the Rangers striker got his shot away.
Boruc then made a fine double save from Davis as the home side stepped up the pressure, although only a poor pass from Landry N’Guemo in a Celtic breakaway prevented Fortune going through on McGregor.
Celtic substitute Georgios Samaras then replaced Aiden McGeady on the hour mark but, in the 65th minute, Hoops skipper Brown was handed a straight red card by McDonald after an altercation with Lafferty on the halfway line.
Celtic changed again, with Ki Sung-Yueng replacing Fortune, while Nacho Novo came on for Lafferty.
Rangers took advantage of the extra man to press for the winner but the Parkhead side still carried a threat on the break.
With eight minutes remaining, Edu flashed a Papac cross over the bar.
The tension and tetchiness increased in the closing stages but the moment of real drama came in injury time when Edu bundled the ball over from close range after a goalmouth scramble.