Match ends, Celtic 1, Rangers 2.
Nikola Katic's towering header won a controversial Old Firm derby for Rangers and cut the gap to Celtic at the top of the Scottish Premiership to two points with a game in hand at the winter break.
Steven Gerrard's side - who had Alfredo Morelos sent off for diving in stoppage time - went in front at Celtic Park through Ryan Kent, just after Ryan Christie had a penalty saved.
But the lead lasted just six minutes as Callum McGregor's strike deflected off Odsonne Edouard's arm to equalise.
Undeterred by the setback, Rangers responded strongly after the break - Morelos scooping over from close range before Katic's powerful intervention gave them a first league win at Celtic Park for nine years.
As for Neil Lennon's league leaders, who had won 11 straight Premiership matches, they huffed and puffed in the final 25 minutes to no avail.
Centre-back Christopher Jullien proved their biggest threat and he twice saw headers cleared off the line by Steven Davis.
- Gerrard hopes people 'take notice' of win
- Celtic must be 'psychologically better' in derbies
- How did the players rate?
'A seismic day for Gerrard and team'
The statistics coming into this were quite something. Celtic had won 15 in a row at Celtic Park in all competitions and hadn't lost to a domestic rival in their fortress since Aberdeen beat them in May 2018. Rangers, for their part, were unbeaten on the road in the league all season with eight wins and two draws.
That was the backdrop along with the tumultuous League Cup final last month, a game that saw Celtic play poorly, have a man sent off, concede a penalty and finish the game with just one attempt on goal - and the trophy.
Rangers had not won here since 2010 and whatever was said about ending that run with a victory, they knew they couldn't afford to lose, not with Celtic already five points clear at the top of the table, albeit having played a game more.
There was more pressure on Rangers, therefore, and they dealt with it wonderfully. They scored a pearler to open proceedings, suffered an injustice with the equaliser and went and won it with that thumping Katic header.
Beating Celtic at Ibrox last season was a sign they were inching closer to their great rivals. Coming to Celtic Park and doing them in their own backyard was a statement of an altogether different kind.
They settled quicker than Celtic. Early on, Lennon was moved to gesture at his own fractious fans to calm down. A little later he sent the same message out to his players, who were wasteful in possession. You couldn't say Rangers had their rivals under the cosh in those opening minutes, but they had the best of it.
Then, as happens so often in this game, things turned sharply. Having posed little threat, Celtic won a penalty when Katic was done for grabbing a fistful of Jullien's shirt. Christie stepped up, thumped his effort to McGregor's left, but the goalkeeper saved magnificently. A missed Rangers penalty at Hampden and now a missed Celtic penalty.
The drama was only starting. Two minutes after the save, Celtic came close to making amends when Jullien's header had to be hacked off the line by Davis. Three minutes after that, more intrigue.
Morelos, carrying with him some bad memories of this fixture, was a major focus in the preamble, but when Rangers opened the scoring it wasn't the striker who got it. It was Kent. The midfielder seized on Borna Barisic's precise delivery from the left and swept a first-time left-foot shot past Fraser Forster at his near post. It was an empathic and sumptuous finish from a player in rich form.
The lead stood for six minutes. That was when the inevitable controversy arrived, Celtic's equaliser at the heart of it. Ryan Jack gave it away in midfield and Callum McGregor got on the ball, lashed a shot on goal that came off Edouard's hand and ended up in Rangers' net. The visitors were incensed but referee Kevin Clancy let the goal stand when he should have ruled it out.
|IFAB Laws of the Game|
|It is an offence if a player: ...scores in the opponents' goal directly from their hand/arm, even if accidental, including by the goalkeeper.|
Maybe the sense of injustice propelled Rangers because they started the second half with a hugely threatening air. Morelos, no goal against Celtic in more than 12 hours coming into this, should have scored, but instead he put it over the bar from close range.
Rangers went again. Barisic's deliveries from corners had been on the money all day and, in the space of a couple of minutes, he almost set up Katic on two occasions. Then, at the third corner, he got his reward, and his second assist, after another brilliant ball landed right on to the head of the centre-half, who nutted an unstoppable effort past Forster. Celtic's defence was lacking, Kristoffer Ajer losing Katic at the pivotal moment.
There had to be a response from the champions - and there was. Just as in the first half, Jullien headed on goal and just as in the first half, Davis was there to kick it to safety. Boli Bolingoli fired on McGregor soon after but the goalkeeper pulled off another big save.
Rangers saw it out from there. It got a bit sweaty for them at times as Celtic piled forward but the win was deserved.
Of course there had to be sensation at the end - and there was. Morelos, already on a booking, got red-carded for diving blatantly, embarrassingly and needlessly in pursuit of a penalty. Rangers first-team coach Michael Beale was also dismissed in the aftermath.
For Celtic, seeing Morelos walk was just about all the joy they got from the day, a day that belonged to Rangers, a seismic day for Gerrard and his team.
Man of the match - Borna Barisic
It could have been McGregor for the penalty save or Davis for the goal-line clearances and midfield excellence, but Barisic was an immense performer, assisting on both goals, crossing to perfection and dealing with Celtic's wide players with ease. Outstanding.
- 23Bolingoli-MbomboBooked at 71mins
- 8BrownBooked at 38mins
- 49ForrestSubstituted forNtchamat 68'minutes
- 17ChristieBooked at 49minsSubstituted forGriffithsat 81'minutes
- 19JohnstonSubstituted forBittonat 68'minutes
- 19KaticBooked at 32mins
- 31BarisicBooked at 82mins
- 10DavisSubstituted forEdmundsonat 90+3'minutes
- 18KamaraBooked at 70minsSubstituted forArfieldat 81'minutes
- 20MorelosBooked at 90mins
- Kevin Clancy
- Shots on Target
Second Half ends, Celtic 1, Rangers 2.
Second yellow card to Alfredo Morelos (Rangers).
Corner, Celtic. Conceded by George Edmundson.
Attempt blocked. Odsonne Edouard (Celtic) right footed shot from the centre of the box is blocked.
Attempt missed. Christopher Jullien (Celtic) header from the centre of the box is close, but misses to the right following a corner.
Substitution, Rangers. George Edmundson replaces Steven Davis.
Corner, Celtic. Conceded by Steven Davis.
Callum McGregor (Celtic) wins a free kick on the right wing.
Foul by Ryan Jack (Rangers).
Corner, Rangers. Conceded by Callum McGregor.
Foul by Boli Bolingoli-Mbombo (Celtic).
Alfredo Morelos (Rangers) wins a free kick in the defensive half.
Jeremie Frimpong (Celtic) wins a free kick on the left wing.
Foul by Scott Arfield (Rangers).
Attempt saved. Boli Bolingoli-Mbombo (Celtic) header from the centre of the box is saved in the centre of the goal.
Alfredo Morelos (Rangers) is shown the yellow card for a bad foul.
Scott Brown (Celtic) wins a free kick in the attacking half.
Foul by Alfredo Morelos (Rangers).
Christopher Jullien (Celtic) wins a free kick in the attacking half.