Gloucester claimed their second win of the season to impose a third defeat of the fledgling campaign on Wasps.
Stephen Jones put Wasps 3-0 ahead before two Freddie Burns penalties and a converted James Simpson-Daniel try gave the hosts a 10-point lead.
Sione Kalamafoni's try followed by Elliot Daly's for Wasps made it 20-13.
Burns then added three more penalties, Jones kicked two of his own and replacement Nick Robinson's three-pointer sealed a bonus-point for Wasps.
Gloucester, facing the possibility of a fifth home defeat in a row, were thankful for the maturing Burns who ran the show for the hosts, ending with a 19-point haul.
The fly-half came close to scoring the opening try early on, only to have it ruled out by the video referee before Jones kicked over the first three-pointer of the afternoon.
Burns soon made it 6-3 to the Cherry and Whites and added his first conversion after Simpson-Daniel found the line with an angled 30-metre burst for his 63rd Premiership try.
Kalamfoni soon added Gloucester's second, when he found nothing in front of him at the base of a ruck and cantered over.
But after Burns again added the extras, Daly scored a fine opportunist try in the corner, Jones kicked over the resulting conversion and Tom Bell reduced the gap to seven points with a penalty kick from five metres inside his own half.
Burns and Jones then exchanged two more penalties apiece before the young England prospect fired over his fifth for the hosts.
Wasps skipper Marco Wentzel was then sin-binned for a technical offence with 17 minutes left and Gloucester Darren Dawidiuk limped off with an injury soon after.
Robinson then kicked over a sixth penalty for Wasps against his old club to ensure they did not leave Kingsholm empty-handed.
VIEWS FROM THE DRESSING ROOM
Gloucester director of rugby Nigel Davies:
"Wasps are a very good attacking team with a lot of quality, but I am a little disappointed we let them back into the game.
"But we are building and that was a step forward today as far as I am concerned.
"We've shown as a team this season that we don't give up, we keep going and we are prepared to grind out wins. That underpins this team at the moment."
Wasps director of rugby Dai Young:
"We had opportunities to win the game, although I don't think we should have won it, to be honest.
"We were quite fortunate to be only seven points behind going in at half-time. We've got to respect the ball - we conceded two tries from needless turnovers.
"I thought we lost the physical battle in the first half and left ourselves with too much to do."
Gloucester: Cook, May, Trinder, Twelvetrees, Simpson-Daniel, Burns, Robson, Wood, Dawidiuk, Harden, Savage, Hamilton, Kalamafoni, Hazell, B. Morgan.
Replacements: Tindall for May (62), M. Thomas for Burns (75), Lewis for Robson (69), Murphy for Wood (69), Britton for Dawidiuk (75), Knight for Harden (66), James for Kalamafoni (75), Qera for Hazell (66).
Wasps: T. Bell, Varndell, Daly, Masi, Wade, S. Jones, Simpson, Payne, T. Thomas, Taulafo, Palmer, Wentzel, Haskell, Poff, Johnson.
Replacements: McIntyre for Payne (69), Lindsay for T. Thomas (57), Staibano for Taulafo (59), Vunipola for Poff (56), Cannon, Davies, Robinson, Wallace.
Sin Bin: Wentzel (62).
Ref: Martin Fox (RFU).