Match ends, Rangers 1, Celtic 0.
Rangers moved level with Celtic at the top of the Scottish Premiership after inflicting Brendan Rodgers' first defeat in 13 Old Firm games.
The home side dominated at a raucous Ibrox to defeat the reigning Scottish champions for the first time since April 2016.
An off the pace Celtic remain top on goal difference, and still have a game in hand over Rangers.
Ryan Jack scored the decisive goal during a one-sided first half.
The visitors were indebted to a string of excellent Craig Gordon saves for keeping them in the game.
Celtic did have a Callum McGregor goal ruled out for offside after the break, but otherwise spent most of the contest at Ibrox on the back foot.
- Rangers' win is about the fans - Gerrard
- Celtic boss Rodgers admits 'best team won'
- How did the players rate?
Midfield muscle powers Rangers
Rangers' intent was evident from the moment Andy Halliday - filling in at left-back for the injured Borna Barisic - celebrated winning a tackle on Olivier Ntcham in the opening minute as though he had scored.
The hosts were urgent, imposing and dominant across the pitch, but the foundation for their performance was the midfield three of Ross McCrorie, Scott Arfield and Jack.
Celtic were hustled and harried out of their normally peerless rhythm, and a waywardness was forced into their play that saw the likes of Dedryck Boyata, Scott Brown and McGregor either pass the ball straight off the field or to a Rangers player.
It was a reflection on the dynamic of the game that Celtic's best player was goalkeeper Gordon, who kept the score down with saves from a Daniel Candeias volley and Connor Goldson's header.
Before Rangers broke the deadlock, Alfredo Morelos and Brown competed for a Halliday corner, and sent the ball spinning off an upright.
Celtic were ragged, and that sense of disorientation eventually proved costly. Kent, a sprightly figure throughout, left Mikael Lustig grounded with a fine run down the left, and when he cut the ball back to Jack, the midfielder side-footed a shot through the legs of Brown, whose heel also deflected the ball past Gordon.
The visitors had strength in depth on their bench, but by the start of the second half they had been forced into two defensive changes, with Kristoffer Ajer replacing the injured Filip Benkovic and Anthony Ralston coming on for Lustig.
The interval did not disrupt Rangers' momentum, and the home side ought to have scored twice in the opening moments after Gordon under-hit a pass to Boyata, allowing Kent to rob the ball. The winger's shot was saved by Gordon, and then Boyata blocked Arfield's follow-up on the goal-line.
Even when Rangers' intensity level dipped, Celtic were prevented from landing a decisive blow. Ryan Christie's shot was deflected wide by Joe Worrall's challenge and in the final moments, Halliday defended stoutly to block a shot by Ntcham.
In between, McGregor ran in behind the Rangers defence, but was judged to be offside before tucking the ball into the net.
'It was a monumental performance' - analysis
Former Rangers striker Steven Thompson on Sportsound
That was Rangers' best performance of the season. If they can replicate this on a regular basis - and if Celtic produce more performances as bad as this - there's 100% a title race.
It's a monumental performance, easily their best under Steven Gerrard. From minute one, the desire and hunger, they wanted it more. They treated it like an Old Firm game while Celtic thought they could turn up and put in an average performance.
Former Celtic goalkeeper Pat Bonner on Sportsound
It's a big, big victory for Rangers and Steven Gerrard. I'm surprised it's been so one-sided. They've bossed the game and deserved their victory.
'They brought their A-game' - reaction
Rangers manager Steven Gerrard on Sky Sports: "This moment is all about the supporters, they've been through a lot and they've been punished in these fixtures.
"The players were outstanding. I asked them to win more one v ones and we were better to a man, we were the better team, we could have won it more comfortably.
"We played with courage, we played with belief, we were brave, competed all over the pitch, I asked them to bring their A-game and they did - that's what I want to see on a regular basis."
Celtic manager Brendan Rodgers on Sky Sports: "I thought the best team won. Rangers played well. We had a lot of unforced mistakes and didn't create as much as we would like so we've got no excuse.
"I think with players missing and one or two unfit, it took away a little bit of strength from us. We brought pressure onto ourselves at times with poor decision-making.
"They'll feel the hurt of losing a Celtic v Rangers game and hopefully that will make them better going forward.
- 16HallidayBooked at 88mins
- 21CandeiasSubstituted forCoulibalyat 71'minutes
- 37ArfieldSubstituted forFlanaganat 90+2'minutes
- 23LustigBooked at 45minsSubstituted forRalstonat 45'minutes
- 32BenkovicSubstituted forAjerat 45+1'minutesBooked at 76mins
- 8BrownBooked at 78mins
- 73JohnstonSubstituted forEdouardat 60'minutes
- John Beaton
- Shots on Target
Second Half ends, Rangers 1, Celtic 0.
Corner, Rangers. Conceded by Callum McGregor.
Corner, Rangers. Conceded by Ryan Christie.
Substitution, Rangers. Jon Flanagan replaces Scott Arfield.
Scott Arfield (Rangers) wins a free kick in the defensive half.
Foul by Ryan Christie (Celtic).
Hand ball by Callum McGregor (Celtic).
Andy Halliday (Rangers) is shown the yellow card.
Alfredo Morelos (Rangers) wins a free kick in the defensive half.
Foul by Anthony Ralston (Celtic).
Corner, Celtic. Conceded by Andy Halliday.
Attempt blocked. Olivier Ntcham (Celtic) right footed shot from the centre of the box is blocked.
Attempt blocked. Scott Sinclair (Celtic) right footed shot from the centre of the box is blocked.
Attempt missed. Ross McCrorie (Rangers) right footed shot from outside the box is just a bit too high.
Foul by Lassana Coulibaly (Rangers).
Ryan Christie (Celtic) wins a free kick on the right wing.
Scott Brown (Celtic) is shown the yellow card for a bad foul.
Ryan Kent (Rangers) wins a free kick in the attacking half.
Foul by Scott Brown (Celtic).