Akker van der Merwe's try and the boot of Robert du Preez gave Sale victory at Wasps to keep alive their slim chance of a Premiership play-off place.
Hooker van der Merwe burrowed over in the second half to give Sale a lead they held on to and ensured a Champions Cup place next season.
Sale dominated the scrum and Wasps gave up three penalties that fly-half du Preez was on target with from the tee.
Wasps scored the opening try through Gabriel Oghre but failed to add to it.
Jimmy Gopperth missed a last-minute penalty from distance which would have given the hosts a potentially crucial bonus-point in a tight table.
Instead, defeat and taking no points from the game was a blow to ninth-placed Wasps' hopes of reaching the top eight and qualifying for the Champions Cup next season.
Their chance will be ended if London Irish can take a bonus-point victory at Bath on Saturday.
Sale can still reach the top four but they must beat Bristol at home on the final day and hope Northampton and Gloucester both do not win their final two games.
It was a gritty affair in Coventry and the home side took the lead midway through the first half as Oghre was driven over.
But Sale began to exert dominance up front and du Preez kicked them back into the game to trail 7-6 at the break.
The second half kick-off was claimed by Wasps lock Elliott Stooke but he injured his leg while landing and was stretchered off.
It further weakened a Wasps pack who were outplayed and Sale's power ultimately won the game.
Wasps: West; Oghre, Alo, Launchbury (capt), Stooke; Shields, Willis, Barbeary, Robson, Atkinson, Bassett, Gopperth, Fekitoa, Hougaard, Crossdale.
Replacements: Frost, Hislop, Millar-Mills, Gaskell, Willis, Porter, Miller, Odogwu.
Sale: James; Roebuck, R du Preez, Tuilagi, Reed; MacGinty, De Klerk, Rodd, Van der Merwe, Schonert, J du Preez, De Jager, Ross (capt), T Curry, D du Preez.
Replacements: Ashman, McIntyre, Oosthuizen, Wiese, B Curry, Warr, Van Rensburg, Hammersley.