Cliftonville moved to within five points of Premiership leaders Linfield as they dominated at Suffolk Road.
Stephen Garrett put the Reds ahead on 12 minutes and Chris Scannell nodded Cliftonville's second goal on 33.
The points were secure on 41 as Ciaran Donaghy's header crept over the line with Jonny Harkness failing to clear.
Mark Burns pulled a goal back for Celtic 13 minutes from time but the Reds held on to move level on points with second-placed Portadown.
Eamonn McAllister had an early chance for the home team but Cliftonville keeper John Connolly made a smart save down to his right.
Garrett then fired the Reds into the lead on 12 minutes as he held off a challenge from Darren McNamee and slotted home after a through ball from Eamon Seydak.
Scannell headed Cliftonville's second goal on 33 after Seydak's quick corner had enabled Martin Donnelly to float in a dangerous cross.
Donaghy increased Cliftonville's advantage on 41 with Harkness getting in a muddle as he failed to clear the Reds defender's header off the line.
With in-demand Rory Donnelly not seeing any action even though he was on the bench, DC pulled back a goal on 77 minutes as Burns' backpost header beat Connolly.