London Irish rose to fourth place in the Premiership after coming from behind to see off struggling Bath.
Josh Bayliss put the home side ahead, only for Paddy Jackson and Ben White to give Irish a half-time lead.
Fly-half Jackson went on to complete four successful kicks to extend the visitors' advantage in the second half.
Barend van Rensburg also crossed the line to wrap up an emphatic Irish win - their fourth victory in five games to lift themselves into the top four.
Neither side managed to seize control during a closely fought opening 20 minutes but, when Irish had Rob Simmons sin-binned for an infringement deep inside his own territory, the home side capitalised.
Bath back row Bayliss went across for the opening try, converted by Ben Spencer, but the visitors hit back when Tom Pearson and James Stokes combined to set up Jackson.
Jackson added the extras, only for Spencer to kick Bath back into the lead with a penalty, but it was Irish who edged in front at the turnaround thanks to a tumbling close-range score from White.
Bath battled hard after the interval, but were let down by indiscipline as both Fergus Lee-Warner and Spencer went to the sin-bin, with Jackson slotting over the penalty resulting from the latter offence.
Irish gained some breathing space when Rory Jennings timed his pass perfectly to send Van Rensburg in for their third try on the hour mark.
Jackson was on target from the tee again to extend the Irish lead further as they closed out the game and left Bath still propping up the Premiership.
Bath coach Johann van Graan told BBC Radio Bristol:
"I thought the first 38 minutes we did really well - but (there are) three very simple things.
"If you concede three yellow cards, if you kick the ball and miss in front of the sticks and if you lose how many lineouts we've lost, you're going to lose the game.
"So no issue with the effort. We've got to be better in those three areas."
London Irish assistant coach Brad Davis:
"We were under the cosh for a lot of the first 40 minutes. Their kicking game pinned us into our 22 and we couldn't get out - our exits were poor.
"The big moment for us, because we lived off scraps, was that we were able to limit Bath to 10 points and still come in with a 12-10 lead.
"In the second 40 we played in the right areas. We were able to put pressure on, resulting in a few yellows, and we hammered it home."
Bath: Gallagher; Cokanasiga, Joseph, Redpath, McConnochie; Francis, B Spencer; Obano, Dunn, Rae, Attwood, McNally, Reid, Underhill, Bayliss.
Replacements: Annett, Morozov, Stuart, Roux, Lee-Warner, Schreuder, Bailey, Cloete.
London Irish: Stokes; Cinti, Van Rensburg, Jennings, Loader; Jackson, Powell; Gigena, Creevy, Hoskins, Ratuniyarawa, Simmons, Martin Gonzalez, Pearson, Rogerson.
Replacements: Willemse, Haffar, Chawatama, Caulfield, Cunningham-South, White, Morisi, Joseph.
Referee: Anthony Woodthorpe