Celtic looked on course for a routine evening when Ryan Christie pounced to score from close range in the 13th minute to put the home side in front at Celtic Park.
But the Accies stayed in the game and seemed to have secured an unlikely point when Marios Ogkmpoe bundled in a leveller in the 90th minute.
Celtic, though, snatched what could be a vital winner in the title race when captain Brown burst into the box to fire in a winner two minutes into injury time.
“It was fraught at times because mentally, we switched off towards the end and allowed Hamilton to get an equaliser, which I wasn’t happy about,” said Celtic manager Neil Lennon, who cited Sunday’s upcoming League Cup final against Rangers as an explanation for his side’s display.
“It’s the psychology of football. A lot of talk and a lot of build-up has been about Sunday and, subconsciously, I think we were a little bit flat.”
Rangers failed to convert dominance into points at Pittodrie as Aberdeen snatched a 2-2 draw in a bodyblow for Steven Gerrard’s men.
Goals from Scott Arfield and Ryan Jack put Rangers firmly in charge, but a goal from Jon Gallagher just before half time restored some belief for Aberdeen.
Rangers’ intensity levels then dropped in the second half as Andrew Considine struck the equaliser for Aberdeen in the 48th minute.
“For 40 minutes the game was so one-sided, we were cruising,” Gerrard told Sky Sports.
“They scored at an important time, before half-time, and it seemed to flip the whole momentum of the game. Then it seemed like we couldn’t handle the pressure second half, we lacked a bit of experience.”
The Dons could even have won the game late on through Sam Cosgrove, but Rangers were also furious a foul on Alfredo Morelos was given as a free-kick outside the box despite the contact on the Colombian from Lewis Ferguson appearing to take place inside the area.
Elsewhere, James Scott’s swift double inspired fourth-placed Motherwell to a comfortable 3-0 victory over St Mirren to move to within a point of Aberdeen.
Steven MacLean rescued a point for Hearts with a late equaliser to deny Livingston a first victory at Tynecastle in over 17 years in a 1-1 draw, but the Jambos remain just one point off the bottom of the table.
Ross County came from behind to take all three points in a 2-1 win against Hibernian, ending a run of nine games without a win and St Johnstone moved off the bottom with their first clean sheet on the road in 10 months in a goalless draw at Kilmarnock.