Wasps moved up to third in the Premiership with victory at Bath.
Winger Frank Halai scored tries in each half while prop Simon McIntyre made the points all but safe with a score just after the hour at The Rec.
Bath rallied late with second-half tries from Tom Homer and Amanaki Mafi to secure a losing bonus point.
Wasps secured a fifth straight league win for the first time since 2012-13 with penalties from Elliot Daly, Ruaridh Jackson and Jimmy Gopperth.
In wet and windy conditions, the visitors showed the greater composure and Daly kicked a long-range penalty from almost halfway for the opening score before Halai bundled over the first try.
Rhys Priestland’s two penalties kept them within two points at half-time but Wasps were unnerved by that rally as Halai’s second try put them 10 points ahead shortly after the restart.
Prop McIntyre looked to have killed the game off after Christian Wade almost went over, but former London Irish full-back Homer touched down from Matt Banahan’s grubber kick for Bath.
Japan international Mafi’s try from a catch-and-drive line-out from the final play was too little too late for Bath, who lost for a sixth time in nine home games.
Wales fly-half Priestland was replaced for Bath at half-time with a knock to his leg while England centre Ollie Devoto was also withdrawn to be assessed for a head injury.
Bath head coach Mike Ford said:
“Ollie (Devoto) took a knock – I am not too sure if it is concussion. And Rhys (Priestland) has got a sore dead leg, but he has said he is fine. It is not too bad.
“We’re disappointed with the way we started both halves. Losing Ollie didn’t help, and Rhys was playing on one leg there in the second-half.
“I’m pleased we got a (losing) bonus point in the end, which is not great to say that when you are playing at home, but at least we showed a bit of character and scored a try at the death.”
Wasps director of rugby Dai Young said:
“We had a lot of possession in the first-half, but we really struggled to break Bath down. We found it hard to get much penetration, but at half-time we said to just keep playing.
“As coaches, all we can do is try to give the players the tools. They have to make the decisions on the day, and I was pretty pleased with how we played the game.
“I thought we looked the better team and we looked in control, but we never really got away from them that much. I never felt comfortable, if I am honest.
“I felt we were in control, but I never thought the game was dead and we were out of sight.”
Bath: Homer; Rokoduguni, Banahan, Devoto, Agulla; Priestland, Cook; Lahiff, Webber, Wilson, Ewels, Day, Houston, Louw (capt), Mafi.
Replacements: Batty, Obano, Thomas, Garvey, Mercer, Evans, Williams, Clark.
Wasps: C Piutau; Wade, Daly, S Piutau, Halai; Jackson, Robson; McIntyre, Johnson, Cooper-Woolley, Davies, Myall, Young, Smith (capt), Hughes.
Replacements: Miller, Gopperth, Stevenson, Rieder, Cannon, Cittadini, Bristow, Festuccia.
Referee: Tom Foley (RFU)
For the latest rugby union news follow @bbcrugbyunion on Twitter.