Winger Christian Wade scored two tries as Wasps condemned Gloucester to a third consecutive Premiership defeat.
Tries from Wade, Nathan Hughes and one from home prop Shaun Knight meant Wasps led 17-10 at the break.
Sione Kalamafoni and Rob Cook scored for the hosts before a dramatic finish saw Guy Thompson hit back.
Wade completed his brace and Wasps' fourth try, before Cook crossed again at the final whistle to secure the consolation of two bonus points.
In a topsy turvy encounter, it was the visitors who struck first when they turned the ball over on halfway, quickly moved it wide and England man Wade brushed aside a tackle to sprint in unopposed.
Nathan Hughes was the next to profit from the home side's generosity when the ball squirted out of the Gloucester scrum. The number eight was the first to react and he bulldozed his way over.
Goode added the conversions to both tries, before his opposite number, Freddie Burns, got the Cherry and Whites on the scoreboard with a penalty.
There was an element of luck about Gloucester's first try - following good work from centre Henry Trinder, Knight fed Andy Hazell and, with the line at his mercy, it looked like he had spilled the ball forward.
However, replays showed that it had actually gone backwards and hit the veteran flanker's shin, and Knight's persistence was rewarded when he followed up the unintentional kick.
After the break, Wasps' lead was then cut to just two points when Kalamafoni went over from a cleverly worked line-out.
Although Burns missed the difficult kick into the wind, he made amends minutes later with a penalty to give Gloucester the lead for the first time.
A Goode penalty put Wasps in front once more, before home full-back Rob Cook crossed out wide to give the hosts a slender advantage.
But the joy was short-lived, as confusion in the Gloucester ranks from the kick-off led to replacement-flanker Guy Thompson scoring as the lead changed hands yet again.
And Wade sealed the win as he evaded James Simpson-Daniel's tackle to touchdown his second try, securing the bonus point in the process.
It was the hosts who had the final word, however, with Cook dotting down his second and Gloucester's fourth try to earn them two bonus points.
VIEW FROM THE DRESSING ROOM
Gloucester's director of rugby Nigel Davies told BBC Radio Gloucestershire:
"It's very frustrating. Things aren't going our way at the moment and sometimes that's the way things are.
"This two-week break will do us good, there's a lot in our game but it's got to be there for forty minutes.
"I said at half-time I was a little disappointed with the energy levels that they showed in the first half. Second half it was different and it made a huge difference.
"I think we are absolutely clear where we need to be, what we need to do and I think this will give us a chance."
"We've got to make this place far more stable than it is for us at the moment and we've got to work to get this crowd behind us early."
London Wasps director of rugby Dai Young on winger Christian Wade:
"You have to say that the first try was a good finish but the second one was something really special - and it was not props he was going around then, it was quality wingers.
"Nobody else could have scored that try so we probably owe him a victory there. He is disappointed not to be with England but he is a very respectful kid as well.
"He knows there are quality wingers in the England set-up and they have done really well all season."
Gloucester: Cook; Simpson-Daniel, Trinder, Mills, May; Burns, Robson; Y. Thomas, Edmonds, Knight; James, Hudson; Savage, Hazell, Kalamafoni.
Replacements: Sharples for Burns (3), Cowan for Robson (71), Dawidiuk for Edmonds (56), Harden for Knight (55), Stooke for James (48), Evans for Savage (48), Kvesic for Hazell (48). Not Used: Gibbons.
London Wasps: Daly; Wade, C. Bell, Hayter, Bassett; Goode, Simpson; Mullan, Festuccia, Cooper-Woolley; Palmer, Myall; Johnson, Haskell, Hughes.
Replacements: Lindsay for Festuccia (57), Taylor for Cooper-Woolley (67), Thompson for Hughes (74). Not Used: McIntyre, Cannon, Davies, Carlisle, T. Bell.
Ref: John Paul Doyle (RFU).