Hull came from behind to consign St Helens to their fourth game without a win.
The Black and Whites produced a resilient performance to keep chipping away at a Saints side low on confidence, if not commitment.
Saints had led 10-4 and appeared in control until the game turned when Jordan Turner raced the length of the field from a sloppy Josh Perry pass.
Three Danny Tickle penalties had more or less clinched it for Hull before Wade McKinnon nipped on to a Richard Horne grubber to twist the knife.
The game remained scoreless until the 22nd minute when, after Tickle had been penalised for a heavy challenge on Sia Soliola, Saints made their good position tell.
The ball was flashed right, with Jonny Lomax, Lance Hohaia and Michael Shenton releasing wing Ade Gardner who had two men to beat on the line, but went head first to touch the ball down.
Jamie Foster drifted his touchline conversion wide.
Hull hit back on the half-hour mark when a sizzling solo effort from full-back McKinnon left the Saints defence clutching thin air.
Tickle missed the conversion and there was no further score with the teams going in level at the break.
Saints were first on the scoresheet after the restart when Puletua dummied and turned to stretch over for a try goaled by Foster. They seemed to have the game in control and were playing a patient brand of football until Perry’s attempted flick pass went to ground and was snapped up by speedster Turner, who raced 80 metres to touch down.
Tickle’s touchline conversion scraped over and he gave Hull the lead for the first time when he slotted a 30-metre penalty to make it 12-10.
Hull had the game by the scruff of the neck, and forced another repeat through a smart kick. The pressure told and Saints gave away another penalty within Tickle’s range to put the visitors four points up with 10 minutes to play.
And Tickle’s boot made the game safe with another penalty – this time for obstruction – four minutes from time.
The game was already sewn up when McKinnon added the final touch.
St Helens: Wellens, Gardner, Shenton, Meli, Foster, Gaskell, Lomax, Laffranchi, Hohaia, Puletua, Wilkin, Soliola, Clough. Substitutes: Perry, McCarthy-Scarsbrook, Wheeler, Dixon.
Hull: McKinnon, Sharp, Martin, Yeaman, T. Briscoe, Horne, Seymour, O’Meley, Houghton, Lynch, Manu, Tickle, Whiting. Substitutes: O’Carroll, Moa, Turner, Ellis.
Referee: B Thaler (RFL)