It was a fast-paced game from the first whistle with Ben Buchanan-Rolleston and David Fisher both having chances in the opening minute, but neither could convert.
Patrick McClean then tried his luck from 30-yards with Ross Glendinning making a good save to stop his goal-bound effort.
The home side were awarded a penalty on the 23rd minute after Heatley fell under the challenge of Marcus Kane.
Gibson made no mistake with the resulting spot-kick and fired a strong strike into the bottom right-hand corner and past Daniel Gyollai, who had dived the wrong way.
Fisher then steered home centre-back Hvid’s strike from the edge of the box.
Stuart King’s men nearly retook the lead instantly with Albert Watson’s header from a Heatley corner was denied by the crossbar.
The frantic first half continued with the home side reduced to 10 when Forsythe received two yellow cards in four minutes, both for fouls on Jonny Russell.
The Glens pushed to break the deadlock before the half-time whistle and got their just rewards on the 46th minute after Glendenning misjudged Kane's high ball into the box with Jordan Jenkins' resulting strike cleared off the line by the alert Joe Crowe. However, Hvid converted the rebound.
Heatley found the target when he connected with Buchanan-Rolleston’s looping cross over the Glentoran defence, outpaced marker McClean and sent a strong effort into the back of the net.
Five minutes later, the away fans thought their side had taken the lead when Fisher’s effort was palmed away by Glendinning and into the path of James Douglas, whose strike curled narrowly wide.
On the 77th minute substitute Niall McGinn's corner was cleared by Cameron Stewart. However Glentoran were able to recycle the danger and Douglas’ cross into the box was flicked home by Fisher to put the away side ahead.
The chances continued to come in the closing minutes with Glendinning having to make two good saves in additional time to stop McGinn and Wassim Aouachria’s strikes.