There was second-half controversy as the home side's replacement hooker, Gabriel Oghre, was only shown a yellow card by referee Craig Maxwell-Keys for a high tackle on Alex Mitchell.
Oghre clearly made contact with the head of Mitchell but was only off the field for 10 minutes, during which time Saints scored, through Lewis Ludlam.
But the black, green and gold struggled to make further inroads after pulling back to five points behind, and Saints' penalty count stacked up to allow Wasps to grab the win.
Jimmy Gopperth came off the bench to twist the knife with a couple of late penalties that proved decisive, but Saints did manage to bag a losing bonus point through a last-gasp James Fish score.
Saints had headed up the M1 with three wins from as many matches, and the formative stages of the game were almost exclusively played in Wasps territory, with Saints probing for openings.
Eventually Juarno Augustus unlocked the door, charging through and offloading in sensational fashion for the onrushing Sam Matavesi to score.
Dan Biggar converted but Saints were dealt a blow as Matt Proctor was forced off with an injury, meaning Rory Hutchinson came into the action on 14 minutes.
And Wasps hit back quickly, piecing together a rapid attack that saw Oghre, who had come on for Tom Cruse after just eight minutes, and Dan Robson combine to set Zach Kibirige away.
Jacob Umaga converted and the scores were level, with the hosts having scored from their only attack inside the opening 20 minutes.
It took a superb saving tackle from Augustus to stop Wasps scoring from a well-worked move, before Saints won a penalty at the other end, allowing Biggar to put them ahead again.
Wasps levelled it up through the boot of Umaga after winning a penalty at the scrum, but Saints were winning the breakdown battle.
The away side were earning so many penalties but still they couldn't get a true foothold in the Wasps half to allow them to sustain any pressure.
And Umaga had the chance to send Wasps in at half-time ahead, but the fly-half sent a kick from a central position wide of the posts, giving Saints a reprieve.
It would have been harsh had the black, green and gold gone in at the break behind as they had enjoyed so much possession and won so many penalties.
Saints made two changes at the break, with Frank Lomani and Alex Waller on for George Furbank and Nick Auterac respectively.
That meant Saints were totally out of back-line replacements for the remainder of the game.
And Lomani looked to have endured a nightmare introduction as Vaea Fifita sauntered past him and dotted down, but the try was ruled out for a forward pass in the build-up.
But Saints were on the back foot, especially at the scrum, allowing Wasps to win a penalty, which Umaga kicked to put his side ahead for the first time in the match.
Umaga had another chance to notch three points soon after but he sent a long-range penalty wide of the left post.
Nevertheless, Wasps were well on top, and they were rewarded for their dominance when Thomas Young offloaded brilliantly for Robson to score.
Umaga kicked to make it 20-10 with 20 minutes remaining, but Wasps were soon stung by a yellow card that could very easily have been a red as Oghre flew in and made contact with the head of Mitchell.
Saints soon scored, with Ludlam rumbling over from a dominant lineout drive.
Biggar missed a conversion he would have expected to make to leave the gap at five points with 15 minutes to go.
Umaga had a chance to extend the lead to eight but his effort from close to halfway drifted wide of the posts.
Saints still couldn't work their way upfield, and they gave away another penalty, which second-half replacement Gopperth kicked with aplomb.
Gopperth added another well-struck effort soon after as the game continued to get away from Saints, who were continually conceding penalties.
Gopperth did miss one with five minutes to go, but Oghre was back on to boost Wasps, rubbing salt in the Saints wounds.
The away side just could not get anything going in what was turning into a really frustrating second half.
But, with the final play of the game, Saints delivered another dominant lineout drive, allowing Fish to go over to grab a losing bonus point.
Wasps: Watson; Kibirige (Crossdale 78), Spink (Gopperth 56), Le Bourgeois, Bassett; Umaga, Robson (Porter 72); Harris (Hislop 44), Cruse (Oghre 8), Scholtz (Toomaga-Allen 37); Fifita (Gaskell 51), Stooke; Shields (c), Young (Carr 73), T Willis.
Saints: Furbank (Lomani 40); Freeman, Proctor (Hutchinson 14), Dingwall, Sleightholme; Biggar, Mitchell; Auterac (Waller 40), Matavesi (Fish 69), Hill (Painter 60); Ribbans (Moon 73), Ratuniyarawa (Coles 55); Lawes, Ludlam (c), Augustus (Harrison 55).
Referee: Craig Maxwell-Keys