Wasps claimed a vital losing bonus point in their bid to avoid Premiership relegation after Bath fought back in the second half at The Rec.
The result sets up a final day clash with Newcastle in which the Falcons must score four tries and win by a margin of seven points.
Nick Robinson's three first-half penalties reflected Wasps's comfort.
But tries by Lee Mears, Stephen Donald and Nick Abendanon put Bath in front before Robinson struck his fourth.
Bath nearly claimed a fourth try and bonus point at the death but Tom Varndell's resolute tackle on Sam Vesty saved the visitors.
That means Wasps will go into their final game at home to bottom-of-the-table Newcastle knowing that they will secure their Premiership status for another year if they claim at least a losing bonus point.
Wasps looked the stronger in the opening half with their scrum set-piece, in particular, clearly on top although the hosts enjoyed the better line-out.
It was Bath who looked to have crossed the whitewash first, following Robinson's kick from the tee, when Stuart Hooper was bundled over on 25 minutes.
The video referee decreed the try was not scored but Bath conceded repeated penalties and Robinson punished them again from 24 metres on the half hour.
In the dying minutes before the interval Bath scrum-half Michael Claassens broke away and headed to ground the ball under the posts, but was caught in goal by Jack Wallace who turned the South African in the tackle.
Mears crossed eight minutes into the second half and, after a brief but exhilarating cameo by ex-rugby league star Kyle Eastmond on as a blood replacement, Donald broke free to run in under the posts, before Olly Barkley converted to make it 12-9 to Bath.
Dominic Waldouck was sent to the sin-bin for killing the ball but Barkley's penalty attempt came back off the upright.
The hosts made their advantage count, creating an overlap for Abendanon to stroll over but Vesty, on for Donald, missed the extras.
Robinson made it four from four off the tee and gave Wasps a crucial losing bonus point from 22 metres with four minutes to go.
Vesty thought he had scored under the posts with two minutes left but, after raising his arm to celebrate, was caught by Varndell who dislodged the ball at the critical stage.
The video referee was called on again and after initially awarding the try, and the bonus point, to Bath, overruled himself and declined it.
VIEWS FROM THE CHANGING ROOMS
Wasps director of rugby Dai Young:
"We just have to win [against Newcastle]. It's in our hands. If Newcastle come and win by that margin they deserve to stay up. Let's be honest about it.
"If we don't win our own game and the other team win by 24 points, we have to look at ourselves really."
"First half we kept it simple - we were in control and we needed a very strong second half, especially the first 20 minutes.
"We talked at half-time about not becoming ragged or loose.
"We gave them a chance to get their tails up. They're a quality team - everyone knows that.
"I'm disappointed with our first 20 minutes in the second half which caused us all sorts of problems and got Bath back in front.
"But in the end we have to say we were quite lucky to come away with a losing bonus point."
Bath director of rugby Sir Ian McGeechan:
"It's going to be one hell of a game in two weeks. I hope Wasps win.
"Five points today would have been very good. But we've got a lot of things right here - I know some people may not think that.
"Sometimes it's been the ball going the wrong side of a post which has cost us four wins."
"We were just more accurate in the second half," McGeechan added.
"We carried with real venom, got into the phases, stayed accurate and then we were always a threat."
Bath: Abendanon; Carraro, Banahan, Barkley, Biggs; Donald, Claassens; Catt, Mears, Wilson; Hooper, Skirving; Ovens, Fearns, Taylor.
Replacements: Eastmond for Carraro (49), Vesty for Donald (64), Flatman for Catt (64), Bell for Wilson (64), Attwood for Taylor (64).
Wasps: Wallace, Wade, Mayor, Waldouck, Varndell, N. Robinson, Davies, Payne, Lindsay, Broster, Launchbury, Birkett, Jones, Poff, Vunipola.
Replacements: Berry for Davies (67), Taulafo for Payne (67), Filipo for Birkett (70), Du Plessis for Poff (54).
Sin Bin: Waldouck (68).
Ref: Dave Pearson (RFU).