Celtic's Jan Vennegoor of Hesselink scored an injury-time header to narrow the gap on Rangers to one point.
Shunsuke Nakamura fired Celtic ahead with a wonderful swerving shot, while Nacho Novo's strike levelled.
Carlos Cuellar was sent off for handling a net-bound Nakamura shot but the injured Allan McGregor was able to save Scott McDonald's spot-kick.
But the Celtic striker struck late on, while David Weir and Gary Caldwell saw red cards after a full-time melee.
A tumultuous evening ended with an ugly scuffle involving several players and Scotland colleagues Weir and Caldwell appeared to exchange blows.
BBC SPORT | Scotland | Celtic winner stuns Rangers - highlights