The hosts had been trailing by 14 points before Kai Horstmann and Dominic Feaunati touched down, with Shane Drahm slotting over the crucial conversions.
Worcester opened the scoring through Marcel Garvey before Pat Barnard went over for Wasps, with Danny Cipriani and Dave Walder kicking the extras.
A James Haskell try extended Wasps' lead before the thrilling finish.
Wasps coach Ian McGeechan: "It's a game we let go, really. We started sluggishly and gave a soft try away, but I felt for an hour we were comfortably the better side.
"Then we didn't have the ball for 15 minutes and when we did get it back, weren't quite clever enough to take the sting out of the game.
"We gave them some easy runs back at us, which you can't afford to do."
Worcester: Drahm, Delport, Rasmussen, Tucker, Garvey, Brown, M. Powell, Morris, C. Fortey, Tuamoepeau, Murphy, Gillies, Wood, Sanderson, Horstmann.
Replacements: Windo, Gotting, Bowley, Quinnell, R. Powell, Feaunati, Pennell.
Wasps: Cipriani, Voyce, Waters, Flutey, Waldouck, Walder, McMillan, Payne, Ward, Barnard, Birkett, Palmer, Hart, Skivington, Haskell.
Replacements: Buckland, Holford, French, Ellis, Amor, Bishay, van Gisbergen.
Referee: R Debney (RFU)
Bookmark with:
What are these?