Steven Gerrard suffered his first defeat in 13 games as Rangers manager as Celtic dominated the first Old Firm game of the season.
Rangers defended manfully but were undone just after the hour when Olivier Ntcham finished a stunning counter-attack for Brendan Rodgers’ side.
Celtic struck the woodwork four times as Rodgers extended his unbeaten Old Firm run to 12 games.
The result means Rangers have not won a league derby since March 2012.
And it leaves the Ibrox side seventh in the Scottish Premiership with just one win in four games, while Celtic move up to second – three points behind leaders Hearts.
Colossus McGregor keeps Rangers in it
This was a bombardment of the Rangers goal, a siege to rival any of the sieges Celtic laid down in this fixture last season when their dominance had its reward in buckets of goals.
Celtic eventually got their breakthrough after an hour but, Lord, how they threatened before that gorgeous counter-attack was finished off by Ntcham.
The visitors were fortunate early on when Allan McGregor, an utter colossus in the Rangers goal, escaped punishment when he flicked his boot into Kristoffer Ajer after the two fell to the turf in the six-yard box. That could have been a penalty. It could even have been a red card. It was neither.
Celtic drove on regardless. James Forrest had a long-range shot deflected on to McGregor’s crossbar. Within seconds, Mikael Lustig headed on to the bar. In the follow-up, Connor Goldson made a critical tackle on Callum McGregor.
It was relentless from Celtic. Kieran Tierney, terrific all day, swung in a cross for Odsonne Edouard, who should have scored. Instead, McGregor denied him.
That was a recurring theme. Early in the second half, the Rangers goalkeeper made a wondrous save from Ntcham, tipping his drive on to the crossbar. For a third time the woodwork was kind to Rangers.
The goal finally came when Tom Rogic, Edouard and Forrest counter-attacked and combined to cut open an incredibly dogged Rangers defence. Forrest’s cool pass across goal was turned in by Ntcham. Clinical.
Rangers called for a foul. And they were right to. Rogic looked like he chopped down Ryan Jack, but their howls were lost in the bedlam that engulfed Celtic Park.
Lustig almost made it two with a glancing header soon after, but Rangers finally came out to play after that.
Craig Gordon saved from Alfredo Morelos, Kyle Lafferty headed past a post and James Tavernier shot wide. That Tavernier chance was a big opportunity to land an almighty sucker-punch, but he could not get his effort on target.
Celtic raise game & Rangers show strides – analysis
We turned up at Celtic Park wondering if our questions were gong to be answered. Could Celtic raise their game to meet the challenge of their much-changed city rivals? Unquestionably, they did. This was 1-0 going on a whole lot more. These have been difficult weeks for Celtic, but the thunder returned against Rangers.
Save for 10 minutes late in the game, Rangers were out-done. Celtic were excellent. They threw back their shoulders and delivered a performance of real substance.
There was another question, of course. Could Rangers get their act together after the humiliations in this stadium last season? Again, they did, but only in a defensive sense. They have a magnificent goalkeeper in McGregor, two redoubtable centre-backs, and lots of honesty and a pile of luck.
The final scoreline flattered them, no doubt about it. They need to find a lot more in attack if they are to kick on as title challengers. There is no questioning their togetherness and their spirit – huge strides have been made – but their wit going forward is still a work in progress.
They now have five points from a possible 12 in the league. One win from four. Gerrard has already done a lot, but has much yet to do.