Henrik Larsson was the Celtic hero as Rangers were dumped out of the Scottish Cup in a poor quality encounter.
Larsson knocked in his 28th goal of the season
The prolific Swedish striker was on hand to score after 52 minutes following a frantic goalmouth scramble.
The home side created the best chances in a disjointed game - Larsson also hit the post with a first-half header from Alan Thompson's corner.
Rangers grafted gamely but lacked a cutting edge in attack and seldom troubled the Celtic defence.
With Celtic enjoying a 16 point lead in the league, a domestic double is very much on, while a disappointing season cannot end quickly enough for Rangers.
A scrappy opening half hour saw neither goalkeeper seriously involved as play was punctuated by foul after foul in a crowded midfield.
Celtic looked marginally more threatening in attack with Stephen Pearson and Didier Agathe making promising surges into the Rangers penalty area and Stanislav Varga slicing a long range shot wide.
With 33 minutes gone, a neat passing move saw the Rangers defence carved open as Larsson found Thompson, but the midfielder hooked a hurried shot well off target.
Pearson was next to trouble the visitors but his effort was blocked and Larsson shot the rebound over the crossbar.
It was an ugly Old Firm encounter
Larsson came close to the opening goal four minutes before the break when his header from a Thompson corner hit the outside of the post.
Rangers started the second half brightly and it needed a wonderful lunging tackle from Bobo Balde to prevent substitute Ronald de Boer getting a clear shot at goal.
But it was Celtic who found the back of the net with Larsson pouncing to score his 28th goal of the season.
Stefan Klos could only punch a Balde header from a Thompson free-kick into the path of Pearson and, while the Rangers keeper did well to block the midfielder's shot and a subsequent effort from Joos Valgaeren, the ball broke to the Swedish striker to sweep home.
With 20 minutes remaining Klos had to readjust his feet to deal with an awkward Thompson free kick that took a deflection off the defensive wall.
Celtic finished strongly and Klos had to be sharp to beat Stilian Petrov to a neat Larsson lay-off. The German then did well to push away a shot from substitute Craig Beattie.
Rangers full back Michael Ball tried his luck from 20 yards in the 89th minute but Robert Douglas gathered the shot comfortably and Gavin Rae sent a tame strike wide in injury time.
Celtic: Douglas, McNamara, Balde, Varga,
Valgaeren (Kennedy 85), Agathe, Lennon, Petrov,
Pearson (Beattie 57), Thompson, Larsson, Beattie (Sylla 90).
Subs Not Used: Marshall, Lambert.
Rangers: Klos, Moore, Frank de Boer, Berg, Ricksen, Rae,
Arteta (Ronald de Boer 36), Hughes (Thompson 66), Ball,
Subs Not Used: McGregor, Khizanishvili, Ross.
Booked: Ricksen, Klos.
Referee: H Dallas (Scotland).