London Irish beat Bath to pick up their first points of the season.
Kyle Eastmond and Halani Aulika exchanged first-half tries, but four penalties from Steven Shingler gave the hosts a 19-13 advantage at the break.
Olly Barkley landed his fourth kick to reduce the arrears before Jonathan Joseph went over, and Shingler converted, to extend the Exiles' lead.
Barkley added two penalties to earn Bath a losing bonus point, as Shingler slotted home his fifth kick.
After shipping more than 40 points in each of their last three defeats, Irish's defences held up to provide them with a maiden win of the campaign and lift them off the foot of the Premiership table.
But it was an unhappy return to the Madejski Stadium for former Exiles head coach Toby Booth, who now plies his trade with Gary Gold's regime at Bath.
The visitors opened the scoring through Barkley, who was playing in his final away game for Bath before his move to Racing Metro.
The departing fly-half exchanged penalties with Shingler in an even opening quarter before the Irish centre landed his third to make it 9-6.
Bath regained the lead when full-back Nick Abendanon was tackled 15 metres out but managed to scoop the ball inside to Eastmond, who darted across the line.
Barkley converted to give the visitors a four-point advantage but Irish launched an attack just before half-time and, from a line-out, the pack drove prop Aulika over before Shingler added the extras.
Bath pulled back the deficit to three points after the re-start as Barkley landed his third penalty, but Marland Yarde charged through into the midfield and provided Joseph who cruised over.
Shingler's conversion stretched the Irish lead to 10 points but, after they lost flanker Jamie Gibson to the sin-bin, Barkley continued his fine form with the boot and added two more kicks.
But a moment of indiscipline after 71 minutes proved decisive as Shingler booted his last penalty to finish the contest.
VIEWS FROM THE DRESSING ROOM
London Irish director of rugby Brian Smith:
"It is a good win and I think we can get a lot of momentum from this.
"We have to keep our feet on the ground and line up Worcester for Friday night.
"We have stayed focused. Sport is a great leveller and it is great to get out of the blocks. Yes, it is a relief but now we have to go and do it all again on Friday.
"I'm pleased for the players because if people looked only at the points on the table, they would think we have done nothing and achieved nothing so far this season. That is not an accurate reflection."
Bath head coach Gary Gold:
"The balance in the first couple of weeks was there was a perception of criticism around the fact that we were kicking everything and we are a boring team.
"That is not what our intention is, though. We want to have that balance to back ourselves.
"We are not just going to do that (kick goals) all day long and hope we win. We want to score tries."
London Irish: Homer, Ojo, Joseph, Shingler, Yarde, Humphreys, O'Leary, Lahiff, Lawson, Aulika, Evans, Garvey, Danaher, Gibson, Treviranus, Fisher.
Replacements: Watson for Homer (79), Geraghty for Humphreys (78), Moates for O'Leary (79), Paice for Lawson (57), Cotter for Aulika (57), Skivington for Garvey (63), Fisher for Treviranus (57), Yanuyanutawa for Fisher (72).
Sin Bin: Gibson (52).
Bath: Abendanon, Eastmond, Hipkiss, Barkley, Biggs, Donald, Claassens, Catt, Mears, Perenise, Hooper, Day, Fearns, Skirving, Taylor.
Replacements: Vesty for Donald (64), McMillan for Claassens (76), James for Catt (57), Attwood for Day (57), Ovens for Skirving (73), Batty, Palma-Newport, Cuthbert.
Ref: JP Doyle (RFU).