The defending champions made a fast start and scored the game's first try after just five minutes when Jon Wilkin took advantage of a lucky deflection to score under the posts.
However, Hull stunned the visitors with two identical tries from Albert Kelly, who levelled the score when he intercepted a St Helens grubba kick and raced the length of the field to touch the ball down.
A few minutes later he intercepted a St Helens pass near his own goal line, and repeated his earlier run to score a try.
St Helens levelled the scores after as Tommy Makinson side-stepped his way through the defence to touch the ball down on his 100th Super League appearance.
St Helens failed to break through a strong Hull KR defence early in the second half, and they were hit with a sucker punch when Kieran Dixon scored a try for Hull in the 62nd minute.
The result hinged on Travis Burns's conversion, but he pushed it wide to confirm St Helens' first loss of the season.