Rangers 1 Celtic 0
The victory puts Rangers two points ahead at the top of the league with just three matches remaining.
Both teams put everything into the match and, while Celtic kept possession better, it was Rangers who created the better chances.
Paul Hartley was booked in the second minute as both teams showed their commitment.
Davis drilled his shot wide and Kenny Miller volleyed past the post before Celtic threatened.
Shunsuke Nakamura's powerful in-swinging free-kick from near the byline was brilliantly touched over by Neil Alexander.
Rangers went close to opening the scoring in the 20th minute when Steven Whittaker's curling cross was just missed by Davis but spun off Artur Boruc's left-hand post with the keeper beaten.
Celtic appealed for a penalty when Scott McDonald went down under a challenge from Whittaker, before Rangers took the lead with a superb goal.
Kris Boyd's pass at the edge of the box released Miller and his cross was volleyed home by Davis from six yards.
Celtic nearly equalised on the stroke of half-time. Nakamura's corner was headed powerfully towards goal by Jan Vennegoor of Hesselink and looked to be going in before Davis cleared off the line.
The visitors were on top after the break and from Andreas Hinkel's cross, Vennegoor of Hesselink's header was well saved by Alexander.
Boyd had a great chance to put Rangers two ahead after Miller's pass put him through but Boruc produced a marvellous save to deny the Rangers striker.
Celtic sent on Aiden McGeady for Shaun Maloney as they went all out for an equaliser and the winger went close with a shot into the side-netting.
Boyd headed over a good chance before being substituted by Lee McCulloch as Rangers closed the game out.