Gloucester downed league leaders Exeter with a whole-hearted performance to record a deserved 24-17 victory at Kingsholm.
It took a try from Ben Morgan three minutes from time to get Gloucester over the line as the home side blew a number of opportunities which would have seem them record a comfortable win.
Jason Woodward, Willi Heinz and Morgan scored Gloucester's tries with Billy Twelvetrees converting all three and kicking a penalty.
Exeter's tries came from Nic White and Tom O'Flaherty. Joe Simmonds kicked a penalty and conversion with Gareth Steenson also adding a conversion.
Gloucester had the better of the early stages but with their first foray into opposition territory, Chiefs took a ninth-minute lead.
The visitors turned down a kick at goal in favour of a driving line-out and were rewarded when scrum-half White darted over from close range.
Simmonds converted but Gloucester responded with a simple penalty from Twelvetrees before wasting a golden opportunity to take the lead when Woodward knocked on when he had an unopposed 20-metre run to the try line.
Moments later, Gloucester had another opportunity when Ruan Ackermann burst away from a maul but the flanker delayed his pass to Franco Mostert and the chance was lost.
After 26 minutes, the home side's pressure was finally rewarded with their first try. A well-judged cross-field kick from Danny Cipriani was superbly collected by Ollie Thorley, whose inside pass gave Woodward the chance to atone for his earlier error when he raced over.
Twelvetrees converted from the touchline before his side threw away another golden opportunity when hooker Franco Marais knocked on five metres out, leaving Gloucester with just a narrow 10-7 lead at the end of a half they had totally controlled.
After the interval, Exeter suffered a blow when Ian Whitten left the field with an injury but they overcame this setback to draw level with a penalty from Simmonds.
Within minutes, the hosts were back in front when following a driving line-out and a period of sustained pressure, Heinz crashed over.
Another flowing move from Gloucester saw Thorley narrowly denied before Exeter rang the changes in an attempt to reverse their fortunes, with Steenson coming on at fly-half and Simmonds switching to full-back.
The switch paid dividends when a well-timed pass from Steenson sent Matt Kvesic through a huge hole in the home defence before the former Gloucester player sent O'Flaherty over in the corner.
Steenson converted to leave the scores level at 17-17 with 15 minutes remaining before Twelvetrees was off target with two angled 35-metre penalty attempts – but Thorley's creative running set up the winning try for Morgan.
ga('create', 'UA-72310761-1', 'auto', {'name': 'pacontentapi'});
ga('pacontentapi.set', 'referrer', location.origin);
ga('pacontentapi.set', 'dimension1', 'By Press Association Sport staff');
ga('pacontentapi.set', 'dimension2', 'd4818965-2b92-42f1-ab11-0e6fe23f3415');
ga('pacontentapi.set', 'dimension3', 'paservice:sport,paservice:sport:uk');
ga('pacontentapi.set', 'dimension6', 'story');
ga('pacontentapi.set', 'dimension7', 'composite');
ga('pacontentapi.set', 'dimension8', null);
ga('pacontentapi.set', 'dimension9', 'sport:rugby-union');
ga('pacontentapi.send', 'pageview', { 'location': location.href, 'page': (location.pathname + location.search + location.hash), 'title': 'Gloucester upset Exeter with late Morgan try'});