Two late tries ended a five-match losing run for London Irish who snatched victory despite having three players sin-binned.
The first half was poor fare for a full house of 10,600, punctuated by penalties conceded at the rate of one every two minutes.
Sadly the only time the players stirred themselves into action was when a mass brawl broke out in the 17th minute.
The blue touch paper was lit by a spear tackle by David Paice on Bath number eight Zak Feau'nati.
The Irish hooker was fortunate to escape with only a yellow card and was joined in the sin-bin by team-mate Neal Hatley and Bath's Peter Short for their part in the fighting.
Amid all the mistakes and mayhem Chris Malone had kicked three penalties for Bath and opposite number Barry Everitt two before Bath finally conjured up a try just before the break.
David Bory collected a kick from Irish scrum-half Paul Hodgson and Nick Walshe broke down the touchline, finding Feau'nati in support for the try.
Malone was wide with the conversion but Bath were reasonably happy with a 14-6 interval lead.
Carrying on in the same positive mood after the break the home side nearly finished off a break by Shaun Berne but had to be content with a fourth penalty by Malone.
Irish lost a third player to the sin-bin when second row Bob Casey was penalised for stamping - just four minutes after coming on as a replacement - but Bath also saw David Barnes yellow carded for a professional foul.
That allowed Everitt to make it 17-9 with his third penalty and the visitors began to find their rhythm.
And they finally made the extra man tell when replacement hooker Robbie Russell was driven over from a line-out in the 70th minute with Everitt adding the conversion to leave them just one point adrift.
With four minutes remaining they took the lead for the first time in the match when Juan Leguizamon crashed over for the decisive try.