Gloucester recorded their first win over Saracens at the StoneX Stadium in nine attempts as they withstood a late rally from the hosts.
Lewis Ludlow bagged what proved to be the decisive try for the Cherry and Whites despite Alex Lewington's late score for Saracens.
Earlier tries from Dom Morris, Rotimi Segun and Theo McFarland looked to have given them the win.
But Ludlow added to first-half tries from Fraser Balmain and Jack Singleton.
It proved to be an eventful afternoon for Gloucester captain Ludlow, who was one of two players sin-binned for the visitors within a minute in the first half as Saracens took the lead in response to Balmain's first score.
Winger Segun pushed the hosts further ahead after centre Morris had replied with their first try while they had the two-man advantage, but former Saracens hooker Singleton pulled Gloucester back into it straight away before Mako Vunipola also went to the sin-bin before the interval.
A cagey second 40 minutes saw the lead change hands three more times either side of penalties from Adam Hastings and McFarland's charge-down score straight off the bench.
But Gloucester held their nerve late on to score a third try under a rolling maul through Ludlow with eight minutes to play.
Despite Lewington breaking away to get Saracens a four-try bonus point inside the last two minutes, Alex Lozowski could not add the conversion to reclaim the lead.
Saracens missed the chance to close the gap on leaders Leicester despite coming away with two points, while victory for Gloucester saw them bounce back from a narrow defeat by Harlequins and maintain their hold on fourth place.
Saracens director of rugby Mark McCall told BBC Radio London:
"Overall we got a little bit de-energised by the opposition today. They out-thought us in that area, which is not a nice thing to say when you're at home.
"We were better in the second half than we were in the first half in that regard, but we just made a lot of errors and mistakes and got forced into those by a really good Gloucester team who deserved their win.
"We've just got to bring a good mentality to every game we play and you've just got to match or better the opposition and we didn't do that today. There's a big lesson for us to learn and hopefully we can learn it.
"We want to be at it from the get-go and we weren't today and we need to explore the reasons why.
"There's a chance for us to switch off next week with a week off, but then after that, there's a real good chance for us to take a good look at where we're at and where we want to take it at the midway point of the season and what we have to do to get there."
Gloucester attack coach Alex King told BBC Radio Gloucestershire:
"We've had a real good first half of the season and today was a good test for us to see where we are after coming up short against Harlequins last week.
"We learned some lessons and I'm so proud of the effort from the lads from minute one to minute 80.
"You have to play smart rugby against Saracens, they're just too good to think you can just drift into space against them, they're well drilled.
"But our kicking game today was really spot on, the back three put us in the right areas and the forwards forced that home.
"We came under some pressure with those two yellow cards and that was probably the most pleasing aspect how we managed that period of the game.
"We could've easily conceded two or three tries from that and the game goes away from you and then you're chasing it.
"But we stayed in the fight at 14-12 at half-time and testament to the guys who came off the bench, they really added energy to the team."
Saracens: Malins; Segun, Lozowski, Morris, Daly; Goode, Van Zyl; Mako Vunipola, George (capt), Koch, Itoje, Swinson, Isiekwe, Earl, Christie.
Replacements: Woolstencroft, Mawi, Milasinovich, Hunter-Hill, McFarland, De Haas, Tompkins, Lewington.
Sin-bin: Mako Vunipola (38 mins).
Gloucester: Evans; Carreras, Harris, Atkinson, May; Hastings, Chapman; Seville, Singleton, Balmain, Clarke, Alemanno, Reid, Ludlow (capt), Ackermann.
Replacements: Socino, Knight, Gotovtsev, Slater, Clement, Meehan, Twelvetrees, Rees-Zammit.
Sin-bin: Carreras (20 mins), Ludlow (21 mins).
Referee: Karl Dickson (RFU).