Bath finally took the lead after a superb kick had pinned Wasps back on their own line.
The hosts won the resulting line-out but Adams Park has very small dead ball areas behind the posts.
That meant the Bath defence was right in Cipriani's face and when he passed behind his own tryline to Josh Lewsey to clear, the full-back dropped the ball.
Crockett was on hand to pounce on the fumble and Barkley converted to give Bath a deserved lead with 27 minutes played.
Wasps had yet to mount a threatening attack but the try sparked them into life and they scored twice in six minutes.
A drive from man of the match James Haskell finally got them on the front foot and when Wasps whipped it wide Flutey's sublime delayed pass opened a gap for Waters and the outside centre scythed though to score a cracking try by the posts.
A try from Alex Crockett (right) gave Bath the lead at Adams Park
Cipriani converted and they soon fired the ball down the back line once again.
Cipriani and Paul Sackey were both brought down just short of the line but Flutey followed up to dive over in the corner.
Cipriani slotted the touchline conversion and having not been at the races for the first half hour Wasps had grabbed a 14-7 lead at the break.
As the half had worn on Cipriani, the brightest young star in the English game, had become increasingly influential but eight minutes into the second half he was trapped at the bottom of a ruck and it was immediately apparent he was badly injured.
The medical staff were rapidly by his side and he was carried off with his right leg encased in a full-length support and wearing an oxygen mask.
When Barkley landed a 55th-minute penalty it looked as though Bath might be on the verge of taking control but Wasps steadied themselves and extended their lead with a superb try.
Quick hands put Tom Voyce clear down the blind side and when he was brought down, second row Palmer was on hand to power over from 10m with Cipriani's replacement, Mark van Gisbergen, adding the conversion.
Voyce dislocated his shoulder in the tackle, and had to be taken to hospital along with Cipriani.
After 64 minutes the hosts bade farewell to captain Lawrence Dallaglio, who was playing his final home game before retirement, and the game went to uncontested scrums after Wasps prop Tim Payne was injured.
The hosts, who by this stage had already used all their replacements, were reduced to 14 men after 69 minutes when Waters was sin-binned.
But despite some desperate late Bath attacks Wasps held out to reach the Premiership final, where they will meet defending champions Leicester.
Wasps director of rugby Ian McGeechan: "To win a game in which we had so little possession showed that the defensive performance was quite remarkable.
"We took our tries when the opportunities came as clinically as we have all season. But the way we defended was quite extraordinary.
"We have played without a lot of our frontline players at various times in the season so to get to another Premiership final is very satisfying. Every player has played a part in getting us there."
Bath director of rugby Steve Meehan: "We're disappointed because we didn't play to our best.
"We had opportunities but the passes weren't up to scratch. We were our own worst enemies at times."
On open-side flanker Michael Lipman, forced off in the first half: "Michael made a tackle and split his lip. He's had about 10 stitches.
"He had difficulty breathing so we couldn't get him back on the pitch but he'll be OK for next Sunday (the European Challenge Cup final against Worcester)."
This page is best viewed in an up-to-date web browser with style sheets (CSS) enabled. While you will be able to view the content of this page in your current browser, you will not be able to get the full visual experience. Please consider upgrading your browser software or enabling style sheets (CSS) if you are able to do so.