The Saints had to come from behind to record their 14th victory from 18 matches this season and extend their advantage over third-placed Wigan to four points.
Joe Burgess gave the Warriors a 10th-minute lead, before Makinson crossed for his first of the night, during which St Helens scored three times at exactly 22-minute intervals.
Each team's opening conversion was missed, and so the scores at the break were 4-4, but the visitors went ahead shortly after the interval when Paul Wellens touched down for Saints' second try.
Josh Charnley's eighth try of the campaign levelled the match again, but St Helens raised their game during a two-minute second-half spell which took the contest away from Wigan.
Mark Percival, who had been off target with his first two kicks of the evening, followed up his drop goal by booting two more points through the posts, after Makinson skilfully went over in the corner.
The Warriors rallied late on, with Burgess denied his second of the evening by the TV judges, and although Charnley did complete his brace of tries with 78 minutes on the clock to make for an exciting finish, Wigan came up four points short to lose consecutive Super League games for the first time this year.