After a nervy opening, Cliftonville had a chance when Ryan Curran reacted quickest to Odhran Casey’s near post cross, but the striker couldn’t keep his flicked effort on target.
At the other end, Kodi Lyons-Foster got his head on the end of a Jonny Russell long throw-in, but his effort lacked the pace to trouble Lewis Ridd.
Glentoran came close on the half-hour when Russell teed up Joe Thomson from 25- yards but although his daisy-cutter of a shot beat the fully extended Ridd, it whistled inches wide of the far post.
Axel Piesold played a clever ball in behind the Glentoran defence which McWoods ran onto, but his effort hit the side netting.
Glentoran had another good chance when Thomson’s cross was met by David Fisher but Ridd was able to save with his legs.
Glentoran forced a number of openings in the opening stages of the second half but couldn’t put efforts on target to trouble Ridd.
Just as it looked as though the game would go to extra time, Cliftonville broke the deadlock with three minutes remaining when Rory Hale took a short free-kick to Keaney, who spun on the edge of the area before firing a low angled shot past Daniel Gyollai.
Worse was to follow for Glentoran soon afterwards as Cammy Palmer was shown a second yellow card for bringing down Hale.
With Glentoran pushing forward in search of an equaliser, Cliftonville caught them on the counter-attack deep in stoppage time as a through ball released McWoods, who ran on to clip a shoot past Gyollai, with the ball trickling into the net via the inside of the post.

