Celtic kept their title hopes alive thanks to a stoppage-time goal by Jan Vennegoor of Hesselink. In a pulsating match, ten-man Rangers were hanging on for a draw when the Dutch striker netted with a diving header.
In a game which had just about everything, Celtic took the lead after a wonder strike by Shunsuke Nakamura in the 20th minute.
Just after half-time Rangers drew level when substitute Nacho Novo drilled a shot home from 16 yards.
Carlos Cuellar then punched a net-bound Nakamura shot from under the bar with 20 minutes remaining, and was correctly red-carded.
But more drama was to follow as Rangers keeper Allan McGregor, though limping badly, pulled off a magnificent save to deny Scott McDonald's spot-kick.
McGregor eventually limped off to be replaced by Neil Alexander, as Celtic mounted attack after attack.
Their efforts looked to be in vain until Vennegoor of Hesselink swooped in for that last-gasp goal.
The home side totally dominated the first half, with Celtic boss Gordon Strachan pushing both his wing-backs forward to outnumber Rangers in midfield.
Vennegoor of Hesselink wasted a good chance, when he failed to control Nakamura's defence-splitting pass.
Celtic took the lead shortly after, when Gary Caldwell's pass found Nakamura who lashed an unstoppable shot from 30 yards past McGregor.
McDonald tested McGregor with a fierce shot, as Celtic ended the half on top.
Rangers took the game to Celtic at the start of the second half though and equalised when Novo picked up a loose ball to shoot low past Artur Boruc.
Celtic were shell shocked and it was the visitors that looked most likely to add to their tally.
Celtic were thrown a lifeline with the penalty, but after McGregor's brilliant save their efforts became ever more desperate until that last-minute goal by Vennegoor of Hesselink.