A frenetic start to the match saw both sides attempt to carve out opportunities to open the scoring but it took until the 15th minute before there was any real chance on goal. Barrie McKay’s pass was crying out for someone to get on the end of it but it sailed through the Celtic penalty area uncontested. Just a minute later Celtic had a chance of their own through Rogic but Rob Kiernan’s challenged deflected it just over Matt Gilk’s crossbar.
Some slack play almost gifted Celtic the opener when a back-pass to Gilks was poorly controlled before the ex-Burnley keeper managed to get the ball out of play.
Rangers should have had a penalty, and many thought referee Craig Thompson had given one, but he instead booked Barrie McKay for simulation after a tackle by Simunovic sent the winger sprawling across the Hampden turf.
As the first-half went on Rangers looked more and more confident and began to really test Celtic’s defence with Jason Holt, James Tavernier and Kenny Miller causing problems for the Hoops’ back four but Brendan Rodgers’ side were able clear any danger.
With the break quickly approaching Celtic stepped up a gear and started pinning Rangers into their own half. Assisted by some terrible passing and decision making by the Rangers players, Celtic found themselves with lots of possession in the Rangers half but couldn’t put Rangers under any more pressure than the Rangers defence had been creating for themselves.
Celtic had the first chance of the second half when Jame Forrest was allowed to carry the ball ten yards before shooting from distance and seeing his shot sail over.
They had the ball in the back of the net just a minute later when Erik Sviatchenko headed home but referee Craig Thompson, correctly, disallowed it for a foul on Clint Hill.
Rangers had a fantastic opportunity to open the scoring just before the hour when James Tavernier’s low cross came to Jason Holt in the Celtic penalty box but his shot was well blocked. The rebound fell to Kenny Miller who played in Barrie McKay but Craig Gordon easily held McKay’s shot.
Matt Gilks made an incredible save from Scott Sinclair’s free-kick to just touch it onto the bar before gathering it at the second attempt. Halliday hat brought down Brown on the edge of the area and Sinclair’s free-kick looked like it was going into the top corner but the ex-Scotland keeper showed great agility, and a bit of luck, to keep it out.
Both managers made a couple changes with Kenny Miller and Josh Windass making way for Joe Garner and Martyn Waghorn while Armstrong and Griffiths replaced Bitton and Rogic for Celtic
Celtic started to throw everything at Rangers but somehow the Gers backline managed to keep clearing their lines and giving themselves an opportunity to re-organise.
Despite Celtic being in control of much of the game, Rangers still found gaps in their defence to try and exploit. Lee Wallace almost found Joe Garner with a deep cross but the ex-Preston forward couldn’t get on the end of it.
Barrie McKay was then substituted with Joe Dodoo coming on in his place as Mark Warburton looked for a winner in the last twelve minutes of normal time.
Scott Brown was booked, and maybe lucky to avoid a red, when he scythed down Andy Halliday from behind. Halliday had picked up the ball in the middle of the park when the Celtic captain lunged in and hacked down the Rangers midfielder.
Joe Dodoo’s introduction appeared to give Rangers a renewed attacking impetus as the ex-Leicester kid repeatedly found himself getting in behind Celtic’s defence wide on the left.
Matt Gilks kept the scores level with yet another top save, this time from Stuart Armstrong, saving down low at his near post to deny the Celtic midfielder from close range.
With just three minutes left Moussa Dembele scored. Lee Wallace lost Leigh Griffiths and his low cross was met by Dembele who poked the ball home from a few yards.
Gilks stopped it becoming two when he made a solid one-handed stop from Griffiths when the Scotland striker broke free and tried to dink it over his head.
Rangers: Gilks; Hodson, Hill, Kiernan, Wallace; Halliday, Holt, Windass (Garner 69’); Tavernier, Miller (Waghorn 69’), McKay (Dodoo 77’)
Subs: Foderingham, Senderos, Crooks, O’Halloran
Celtic: Gordon. Lustig, Simunovic, Sviatcheknko, Tierney; Bitton (Armstrong 62’), Brown; Forrest (Gamboa 90+1’), Sinclair, Rogic (Griffiths 69’); Dembele
Subs: De Vries, Toure, Roberts, McGregor
Goal: Dembele 87’