Wasps (16) 23
Tries: Flutey, Rees Cons: Cipriani, Staunton Pens: Cipriani 3
Bath (12) 27
Tries: Claassens, Stevens, Dixon, Maddock Cons: James 2 Pen: James
Cipriani lasted 51 minutes on his return from a serious ankle injury
Danny Cipriani came through his return from injury unscathed but was unable to prevent Wasps sliding to their fourth Premiership defeat in five games.
Bath took an early 12-0 lead through Michael Claassens and Matt Stevens.
Cipriani, who played 51 minutes, landed three penalties and converted a Riki Flutey try to give Wasps a 16-12 lead.
Bath hit back through Pieter Dixon's try and a James penalty, and although Tom Rees put Wasps back in front, Joe Maddock went over to send Bath top.
Cipriani was returning to action six weeks ahead of schedule from a serious ankle injury one day after England fly-half rival Jonny Wilkinson suffered a dislocated knee playing for Newcastle.
The 20-year-old Wasps number 10 was playing against the same opponents and on the same ground where he sustained the fractured ankle dislocation in May.
Originally it was thought he would not return to action until the end of November and as a result England boss Martin Johnson left him out of his 32-man elite squad.
That meant he would not be eligible to play for England in their four November internationals, but Wilkinson's injury has now opened the door for him to be called up from the second-string Saxons squad.
Cipriani made a shaky start, spilling a high kick from opposite number James, and Bath made him pay.
England prop Stevens, who had a storming game, rumbled forward before Claassens squeezed over for the opening try.
Stevens soon powered over for a try of his own and James's conversion gave Bath a 12-0 lead.
Defending champions Wasps' appalling start to the season seemed set to continue but they managed to respond through Cipriani's boot and a try from Flutey.
Cipriani landed three penalties and a conversion and was denied a fourth penalty by referee Sean Davey even though the touch judges raised their flags.
That meant Wasps led 16-12 at the break but they were behind within four minutes of the restart as Stevens set up hooker Dixon.
James missed the conversion and although he edged Bath further ahead with a penalty Wasps re-took the lead as flanker Rees burrowed over near the right corner flag.
Cipriani's replacement, Jeremy Staunton, landed a difficult conversion but Bath had the top of the table in their sights.
And the visitors secured their four-try bonus point when right wing Joe Maddock crossed in the 60th minute, with James converting from the touchline.
Wasps coach Shaun Edwards:
"It was incredibly difficult that we had that goal disallowed.
"We feel pretty aggrieved about what happened. I've never seen that happen before. I've seen it where one (touch-judge) has given it and the other one's not and the referee's adjudicated - but never both.
"If Danny's kick had been allowed we'd have been one point behind and Jeremy could have kicked another three."
Bath director of rugby Steve Meehan:
"I thought it was Matt (Stevens') best performance so far for the team. He played well last week against Worcester - and tonight was even better.
"We are absolutely delighted with that performance. It was a terrific game and a terrific advertisement for rugby.
"We went out to play and stuck to our game - and when we had to defend we defended well."
Wasps: Voyce; Sackey, Waldouck, Flutey, Lewsey; Cipriani, Reddan; Payne, Ibanez, Vickery, Shaw, Palmer, Worsley, Rees, Hart.
Replacements: Staunton for Cipriani (51), Robinson for Reddan (74), French for Payne (75), Webber for Ibanez (63), Birkett for Palmer (73), Haskell for Worsley (31).
Not Used: Hoadley.
Bath: Abendanon; Maddock, Crockett, Berne, Cuthbert; James, Claassens; Barnes, Dixon, Stevens, Harrison, Short, Hooper, Lipman, Faamatuainu.
Replacements: Higgins for Cuthbert (63), Bell for Barnes (63), Mears for Dixon (25), Scaysbrook for Lipman (41).
Not Used: J. Ovens, Bemand, Fuimaono-Sapolu.
Ref: Sean Davey (RFU).