|Gloucester (16) 31|
|Tries: Marshall, Thrush, Hibbard Cons: Burns 2 Pens: Burns 3, Twelvetrees|
|Saracens (13) 23|
|Tries: Brits, Fraser Cons: Lozowski 2 Pens: Bosch, Lozowski 2|
Saracens suffered a second straight Premiership defeat but fit-again prop Mako Vunipola staked a claim to rejoin England as he played 70 minutes of their loss at an inspired Gloucester.
Vunipola, returning after nine weeks out, proved his fitness in a game won by Richard Hibbard's late try.
It was level at 23-23 after tries from Sarries' Schalk Brits and Will Fraser plus Gloucester' Tom Marshall and Jeremy Thrush.
But Hibbard's late score clinched it.
A Billy Twelvetrees penalty seven minutes from the end had edged Gloucester ahead for the third time in the enthralling top-flight battle before the hosts' third try denied Saracens a losing bonus point.
Sarries, who lost back-to-back first-team games for the first time since May 2015, missed the chance to close the gap on leaders Wasps at the top.
Things had looked ominous for Gloucester - who have lost just once at home in all competitions since October - when Saracens crossed early on through South Africa hooker Brits after clever play from Richard Wigglesworth.
But David Humphreys' side settled into a bruising game and eventually earned themselves a three-point half-time lead thanks to Marshall's try and Billy Burns' accurate boot.
After the break, lock Thrush collected a loose Saracens pass to extend the hosts' lead with only his second try for the club, before Alex Lozowski's penalty cut the deficit for Sarries.
A gripping game was then interrupted by a worrying injury to Gloucester fly-half Burns, who went down after a try-saving tackle in the corner and received lengthy treatment before being taken off on a stretcher with an oxygen mask, with the medical staff taking care not to move the 22-year-old.
Saracens then drew level when Will Fraser crossed after a driving maul from a line-out and Lozowski converted to make it 23-23, and the visitors looked set for a late comeback.
But then, after Twelvetrees had kicked Gloucester back in front from the tee, David Halaifonua broke quickly and almost crossed in the corner before the match-clinching try finally came from the resulting line-out, as Hibbard's strength saw him over.
Gloucester hooker Richard Hibbard told BBC Radio Gloucestershire:
"We had a terrible game last week and we asked for a reaction. It was all about us this week.
"The scrum was a big positive for us tonight. It was something we worked on this week. Now we need to build on this win and push on.
"It is a massive win. They are the champions. We can really take positives from this game and go to Wasps confident."
Saracens director of rugby Mark McCall told BBC Sport:
"We're disappointed that we couldn't get something from the game. We were not as composed as we normally are in our half.
"We had an open mind as to how Mako Vunipola was going to go and he felt pretty good. He did well.
"I'm assuming he's going to play against Italy now in some form."
Gloucester: Marshall; Sharples, Scott, Twelvetrees, Halaifonua; Burns, Heinz (capt); Hohneck, Hibbard, Ma'afu; Savage, Thrush; Moriarty, Rowan, Morgan.
Replacements: Matu'u, Thomas, Doran-Jones, Galarza, Ludlow, Braley, Hook, Trinder.
Saracens: Maitland; Ashton, Bosch, Barritt (capt), Ellery; Lozowski, Wigglesworth; M Vunipola, Brits, Figallo, Rhodes, Hamilton, Fraser, Burger, Wray.
Replacements: Saunders, Barrington, Du Plessis, Flanagan, Brown, Spencer, Malins, Gallagher.
Referee: Wayne Barnes.
For the latest rugby union news follow @bbcrugbyunion on Twitter.