All three tries came from forwards, as Michael Dunlop, Harry Hamilton and captain Colin Stuart all crossed the line, with Gareth Pritchard adding a conversion and penalty from the tee.
The Reds’ forward pack was dominant throughout, and they won a penalty which Pritchard landed for the game’s first points on 21 minutes, after a quiet opening quarter.
The Neilson Park crowd had to wait until three minutes before the break to see the Reds score again, as their forwards powered over from a well-constructed maul, with prop Michael Dunlop awarded the try.
Rhodri Thomas’ side enjoyed the majority of possession and territory in the first half, but were unable to add to their tally, while the visitors crossed against the run of play for their first try.
The successful conversion meant the gap was just a point at half-time (8-7).
After the break, the game followed a similar pattern to the first half, and the home side grabbed a second try just seven minutes in when big lock Hamilton took a short pass to barge over. Pritchard converted.
They made the game safe with the try of the match on 72 minutes, as wing Kyle Adams broke away, before offloading to captain Stuart, and the veteran number eight beat the covering defence to touch down.
The conversion was missed, and despite an RHC try late on, Haddington held on for a fourth straight league win.
The Neilson Park side are up to fourth in the table, and head west to take on Dalziel on Saturday.
Haddington: James Ferguson, Kyle Adams, Kyle Hamilton, Connor Munro, Andrew Durkin; Gareth Pritchard, Jack Hamilton; Mike Dunlop, Kyle Munro, Garry Cockburn, Ben Laing, Harry Hamilton, Jonny Riddell, Kris Paterson, Colin Stuart (captain)