Devarn Green opened the scoring from close range with the first opportunity of the game, but the visitors levelled through a Josh March penalty shortly after a disallowed Ryan Loft effort.
However, the Iron striker got his goal just before the half-time break, and then substitute Lewis Spence sealed it with a brilliant goal from 35 yards in the 90th minute.
United went into the game making two changes from the side that started in the abandoned encounter against Bradford City a week-and-a-half earlier as Jordan Clarke and Jem Karacan came in for Jai Rowe and Spence.
Scunthorpe took the lead on four minutes with the first chance of the game, as Loft’s first touch took him into acres of space on the right of the area. He put a ball across to Green, who controlled and then converted from eight yards out for his second goal of the season.
The visitors looked to respond to the early goal with Emmanuel Onariase hooking away a long ball searching for Aaron Martin. United also dealt with a couple of aerial duels soon after.
With ten minutes played, Junior Brown did well to cushion a header back to Mark Howard as the bounce over the top and the onrushing attacker posed a threat.
Not long after, Abo Eisa surged forward following a cross field ball by Alfie Beestin but the visitors did well to win the ball on the edge of the area and mount an attack of their own with Onariase coming in with a superb sliding challenge.
Harrogate won a free-kick on the left and Brown cleared as Simon Power got the ball on the edge of the box, with Josh March winning a corner soon after with Green and Brown both over on the far side blocking his cross. The corner then came in for Aaron Martin, who headed wide.
With 21 minutes gone, the visitors looked to get some joy down the right side, but Brown again came across to concede a corner. This time the ball came in and was headed away by Green.
After 25 minutes, there was a disallowed goal for the Iron as Loft coverted a left-sided cross from Eisa from close range, but the assistant had his flag up for offside.
Just a minute later, the away side were level though as Josh March scored from the penalty spot after he was adjudged to have been brought down on the right side of the area by George Taft.
On 32 minutes, Green needed treatment from the medical staff after falling awkwardly while trying to tackle Martin, but was able to carry on.
Eight minutes later, the next chance of the game came the way of Josh McPake, who saw his shot deflected wide on the edge of the area for a corner, but nothing came from the set-play. During that corner, Onariase and Martin both clashed heads going for the ball, so play was halted with both being treated before they continued.
With 43 minutes gone, Gilliead surged forward down the right but his cross was blocked before Eisa was crowded out on the edge of the box.
In the third minute of first half stoppage time, Loft surged through on goal following Beestin’s through ball before slotting the ball beyond James Belshaw to give the Iron the lead once more.
The 48th minute saw a corner to the visitors on the left as they tried to battle through into the area. Howard punched clear with Eisa looking to send Beestin down the right on the counter attack.
Four minutes later, Gilliead battled his way out with the ball with play then spread left with Green and Brown. The two combined before Belshaw came out to gather the ball.
With 57 minutes gone, Eisa surged through and looked to have played Green in on the left but for a trailing leg from the defender to send the ball out for a throw.
Just before the hour mark, van Veen came on for his first football since November 21st, and replaced Green.
Soon after, the Dutchman seized on a loose ball down the left and beat his man before looking to thread Eisa into the box, but Belshaw was out to gather.
On the 64 minute mark, Onariase recovered well to make a good slide challenge on March inside the penalty area as Harrogate came forward.
Three minutes later, Beestin’s ball met the run of van Veen down the left, with the Dutchman bringing the ball forward and winning a corner. From it, Taft was claiming he was being held, as the ball was put into the box by van Veen, but the referee signalled for a goal kick.
Not long after, there was a quick break from the Iron from a Harrogate corner as van Veen won the ball back and found Eisa. His low cross was collected by Belshaw though.
With 78 minutes played, Onariase and Karacan were replaced by Jacob Bedeau and Spence, while six minutes later Loft came off to be replaced by Jordan Hallam.
In between those changes, van Veen tried to force his way through on the left after Beestin fed him possession, but he ran into Warren Burrell and the ball went out of play.
With a minute left, Beestin showed great control on the edge of the area to play in Eisa, who fired a low goal-bound shot which was blocked away for a throw-in.
A corner was then won on the left, which Eisa and van Veen took short. The latter brought the ball more central and played it to Spence, 35 yards from goal, who unleashed a drive from the edge of the area which went into the top corner. It was his first goal for the club and sealed the victory.
Scunthorpe return to action on Tuesday night when they make the trip to take on Bolton Wanderers (7pm kick-off).
IRON: Howard, Clarke, Taft, Onariase (Bedeau, 78), Gilliead, Loft (Hallam, 84), Eisa, Brown, Green (van Veen, 59), Beestin, Karacan (Spence, 78).
IRON SUBS NOT USED: Watson, Rowe, O'Malley.
HARROGATE: Belshaw, Falkingham, Smith, Burrell, Thomson, Martin (Beck, 70), Hall, Francis, March, McPake, Power (Muldoon, 87).
HARROGATE SUBS NOT USED: Lawlor, Kiernan, Kerry, Minter.