Gloucester put more distance between themselves and the lower reaches of the Premiership as they edged out fellow strugglers London Irish.
Fergus Mulchrone crossed after just one minute for the Exiles before two Billy Twelvetrees penalties and a sharp Jonny May score put Gloucester in control.
The Exiles improved after the break with Eamonn Sheridan squeezing in to cut the deficit to 19-12.
Twelvetrees was a steadying influence with his goalkicking and on-field leadership
Another Sheridan try raised Exile hopes but a late missed penalty was crucial.
Gloucester started like a team still on its Christmas break, failing to realign defensively when a quick tap from Tomas O'Leary - after the visitors conceded a free-kick at the scrum - and a handful of simple passes gave centre Mulchrone the easiest of run-ins with just a minute on the board.
But the Exiles failed to build on their early good fortune, with Gloucester hauling themselves back into the game through two Twelvetrees penalties as they made the most of their rare incursions into opposition territory.
A missed penalty from Humphreys and an ill-advised grubber from full-back James O'Connor, with winger Topsy Ojo demanding the ball outside him, was as much as the Exiles could muster in attack.
With both sides at the wrong end of the Premiership table, attacking verve was definitely in short supply at the Madejski Stadium, with the conservative option frequently preferred by players seemingly short on confidence with ball in hand.
But the approach paid dividends for Gloucester when O'Connor's attempt to take on Henry Trinder on the outside was foiled by a superb tackle, with the centre then springing to his feet to snaffle the ball and release it to Twelvetrees, who in turn fed May to scorch in for his 11th try in 15 games.
The try did little for the game's flow, with an extended spell of scrum resets and handling errors restricting play to a narrow strip around halfway for nearly 10 minutes before Twelvetrees extended Gloucester's lead with a well-struck penalty with the final kick of the half.
The early part of the second half was a similarly stodgy affair, with another missed Humphreys penalty coming at the end of a spell of largely inconsequential attacks from both sides.
But the pattern of the game was turned on its head with some excellent attacking play from the Exiles seeing Ofisa Treviranus cut down just short of the try-line.
Sheridan grabbed a brace of tries for the Exiles
And, when May turned the ball over, Gloucester went agonisingly close to a score at the other end, with Elliot Stooke also failing to get the ball down with the line in sight after good work from number eight Ben Morgan.
Another Twelvetrees penalty did extend his side's lead to 19-7 but another decent spell from the Exiles found its reward on the scoreboard when Sheridan squeezed in at the corner after his side had gone through numerous phases to stretch the defence.
Replacement Freddie Burns kicked a penalty to give Gloucester a comfortable 10-point lead, but London Irish - helped by the increased energy off the replacements' bench and a quicker tempo - began to build momentum and created the space for Sheridan to grab his second try of the game.
Replacement fly-half Shane Geraghty kicked the extras to make it 22-19, but got a subsequent penalty attempt all wrong as the Exiles' hopes of a draw evaporated.
A late race to the ball between Ojo and May was just won by the home winger to at least protect his team's losing bonus point, but that will be little consolation to a side which have now lost nine of their last 10 games in all competitions.
VIEWS FROM THE DRESSING ROOM
London Irish head coach Brian Smith:
"We scored three tries to one which was a definite positive.
"It was disappointing but I'm very proud of our effort in the second half as bringing on fresh legs produced an excellent response and provided a great show.
"We had an outstanding start and skipped ahead but they chipped away at our lead and we coughed up too much ball in the second quarter to give away some cheap penalties.
"It would have been a pretty good result if we could have got a draw in the end as it's disappointing to have only one point when we score three tries to one."
Gloucester director of rugby Nigel Davies told BBC Radio Gloucestershire:
"It's very important we built momentum over the Christmas period - that's two wins on the trot, which is very important to us. It builds confidence, belief and we can move forward and actually start going up the table rather than going down.
"We obviously gave away a very sloppy try at the start of the game, but then we were in complete control with players in the right areas and managed the game really well.
"Overall, I was really pleased with the performance of the boys today and it was such a crucial game for us yet again."
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.