Premiership leaders Saracens maintained their 100% record, but were given a stern test by resilient Wasps.
The home side narrowly led at half-time through Alex Goode's penalty.
Will Fraser widened the deficit by touching down after the break, but Chris Bell struck back after great work from Christian Wade.
Owen Farrell kicked three penalties to open up a 14-point cushion, but Wasps salvaged a bonus point as Andy Goode converted another Bell try.
Saracens may have lacked the fluency that had seen them drop just one point from a possible 20 this season, but they were patient enough to break down a powerful Wasps side.
Dai Young's men held firm for long periods, and Goode's penalty aside, were rarely troubled by the Premiership's top team in the first half, even when forward Kearnan Myall was sin-binned for tackling Fraser off the ball.
England lock Joe Launchbury epitomised his side's defiance, winning multiple turnovers, but the visitors provided little threat in the Saracens half.
And it was a half-time substitution that provided the spark for the home team when England fly-half Farrell, replacing Ben Ransom, fed Alex Goode, who released Fraser to cross in the corner with an impressive turn of pace.
Farrell kicked the extras and it seemed Wasps' hopes of registering their second win of the season, following last week's victory over Worcester, and inflicting a first regular-season defeat on Saracens at Allianz Park were diminishing.
But the impressive Launchbury linked with Wade, who superbly jinked through the home defence before managing to find Bell for a score in the corner.
Substitute Andy Goode missed the conversion and Farrell showed him how it should be done by landing a trio of efforts from the tee, but Wasps earned the bonus point they deserved by crossing at the death.
Saracens winger Chris Ashton saw yellow for a deliberate knock-on that denied Wasps a scoring opportunity, only for Bell to capitalise on the space for his second try before Goode converted.
VIEW FROM THE DRESSING ROOM
Saracens director of rugby Mark McCall:
"Sometimes you have to dig in. Everybody wants to see lots of tries but Wasps did a tremendous job today.
"They were good defensively, they get numbers in at the breakdown, they go for the ball hard and it was a terrific workout for us ahead of the Heineken Cup next week.
"We rolled up our sleeves and won comfortably in the end, it's job done."
Wasps director of rugby Dai Young:
"We deserved to get something out of it.
"Our accuracy with the ball wasn't good enough and we'll have to work hard at that because we are not giving ourselves enough of a chance to put teams under pressure."
Saracens: Ransom, Ashton, Tomkins, Wyles, Tagicakibau, Goode, De Kock, Gill, George, Johnston, Hargreaves, Kruis, Wray, Fraser, Joubert.
Replacements: Farrell for Ransom (41), Wilson for Tomkins (75), Wigglesworth for de Kock (50), Botha for Gill (66), Brits for George (53), M. Vunipola for Hargreaves (66), Brown for Wray (50). Not Used: Du Plessis.
Sin Bin: Ashton (78).
Wasps: Daly, Wade, C. Bell, Hayter, Bassett, Carlisle, Davies, Mullan, Festuccia, Cooper-Woolley, Launchbury, Myall, Jackson, Johnson, Hughes.
Replacements: Goode for Daly (41), McIntyre for Mullan (63), Lindsay for Festuccia (54), Taylor for Cooper-Woolley (65), Cannon for Myall (69), Thompson for Johnson (63). Not Used: Moates, Jacobs.
Sin Bin: Myall (27).
Referee: Luke Pearce