Winless in five matches heading into Saturday's League Two contest, the Sulphurites threatened to upset their title-chasing hosts following an impressive first-half showing.
And, although second best during the second 45, Simon Weaver's men looked to be on course for a hard-earned draw, until Hall's unforced error deep inside his own half teed-up Eoin Doyle for what proved to be the game's decisive goal.
The opening half-an-hour saw Harrogate serve up their best spell of football in some time.
Clearly benefiting from having a very decent playing surface to work with, they passed and moved the football intelligently, while pressing their hosts to good effect when out of possession.
Josh McPake set the tone early on, dancing infield off the left flank and teeing up George Thomson, though the midfielder's low finish from a very promising position on the edge of the penalty area flashed just the wrong side of the upright.
Moments later, more good work from McPake out on the left flank led to Jack Muldoon curling a strike over the cross-bar.
Then, with 13 minutes on the clock, Harrogate ended their six-hour goal-drought as they conjured up the kind of quality in the final third which has been missing in recent weeks.
Muldoon bent a dangerous cross in from the right, Thomson met the ball at the near post and although Matt Gilks produced a good reaction stop, the unfortunate Gethin Jones couldn't help but divert the rebound into his own net.
The visitors remained in control of proceedings for the next quarter of an hour, dictating the tempo and preventing Bolton from building any momentum.
But, for all their good work, it took a fine save from James Belshaw to deny Doyle one-on-one after the Trotters striker latched onto Declan John's defence-splitting pass.
Doyle then had what looked a goal-bound effort diverted over the bar by team-mate Kieran Lee as the hosts began to show some signs of life with half-time approaching.
And the second period saw them take charge of proceedings, levelling matters in the 53rd minute.
Dan Jones initially did well to win possession for Harrogate on the edge of his own box, however the ball ran away from him and broke kindly for Lloyd Isgrove, who took aim from 20 yards and watched his low strike trickle beyond the outstretched hand of Belshaw.
With Wanderers smelling blood, Town did well to negotiate a difficult period as Dapo Afolayan and Lee saw shots from outside the area fly wide of the mark.
However, just as Weaver's men started to see a bit more of the ball in home territory, disaster struck.
Under no pressure, Hall attempted to pass the ball back to central-defensive partner Will Smith, but didn't connect properly. Doyle seized on the error, driving towards goal before slotting a clinical 78th-minute finish past Belshaw.
Unlike in recent weeks when they have struggled for a response following a set-back, the Sulphurites did react well on this occasion, substitute Jon Stead forcing a good save out of Gilks before nodding wide from a long Jones throw-in.
But, despite a little bit of late pressure, there was to be no reprieve and Weaver was once again left to wonder what might have been.
Defeat, Town's fifth in six matches, sees them drop to 17th in the League Two standings.
Bolton Wanderers: Gilks; Jones, Santos, Baptiste, John; Lee (Brockbank 90+4), Williams; Maddison (Thomason 46), Isgrove (Elbouzedi 76), Afolayan (Delfuoenso 74); Doyle (Miller 90+4). Unused substitutes: Tutte, Gnahoua.
Harrogate Town: Belshaw; Burrell (Fallowfield 83), Smith, Hall, Jones; Thomson, Falkingham, Kerry (Francis 67), McPake (Kiernan 67); Beck (Stead 61), Muldoon. Unused substitutes: Cracknell, Williams.
Referee: S Allison (Wiltshire).