Saints opened the scoring through Ade Gardener after four minutes.
Quins soon hit back through Mark McLinden's try, with Matt Gafa landing a superb conversion.
But Saints re-took the lead through Paul Wellens, with Jamie Lyon converting, and they made sure with a late converted try from James Graham.
Harlequins boss Tony Rea:
"The conditions were awful but the bounce of the ball, plus a couple of unacceptable lapses in concentration, have cost us. "Mark McLinden been absolutely soaked by the rain and it was getting dangerously cold for him.
"The wind-chill factor was a real concern, so it was essential that he changed into a new top otherwise he could have been in real trouble."
St Helens: Wellens, Gardner, Lyon, Talau, Meli, Pryce, Long, P Anderson, P. Anderson, Cunningham, Fozzard, Fozzard, Gilmour, Sculthorpe, Hooper, Graham, Fa'asavalu, Fa'asavalu.
Replacements: Hooper for Pryce (64), Graham for P. Anderson (19), Fozzard for P. Anderson (54), Roby for Cunningham (30), Fa'asavalu for Fozzard (36),
P Anderson for Fozzard (73), Sculthorpe for Gilmour (59), Cunningham for Sculthorpe (48), Wilkin for Hooper (46), Fa'asavalu for Graham (57), P. Anderson for Fa'asavalu (37),
Graham for Fa'asavalu (68).
Harlequins RL: McLinden, Clubb, Gafa, Smith, Bradley-Qalilawa, Dorn, Leuluai, Tookey, Tookey, Weisner, Heckenberg, Heckenberg, Williams, Hopkins, Mbu, Mbu, Mills, McCarthy-Scarsbrook.
Replacements: Tookey for McLinden (74), Budworth for Tookey (19), McCarthy-Scarsbrook for Tookey (68), McCarthy-Scarsbrook for Weisner (30),
Tookey for Heckenberg (35), Hopkins for Heckenberg (67), Mbu for Hopkins (48), Mills for Mbu (19), Sheriffe for Mbu (58), Heckenberg for Mills (48), Weisner for McCarthy-Scarsbrook (54).
Att: 9,520
Ref: R Laughton (Barnsley).