DUNGANNON 15 BALLYMENA 21, Stevenson Park
Scorers: Dungannon: Pens: James Shiells 3; Drops: James Shiells 2
Ballymena: Tries: Sam McKinney, Steven Castle, Andrew Kerr; Cons: David O'Hara 3
Dungannon were leading 15-7 at one stage in the second half - out-half James Shiells kicked three penalties in the first half and added two fine drop goals after the break.
But a try from Ballymena centre Steven Castle, converted by number 10 David O'Hara, made it a one-point game and Ballymena landed the sucker punch just as the game ticked into injury-time.
Flanker Andrew Kerr bulldozed through for his second try in seven days, which O'Hara again converted.
Dungannon could not conjure up a response and John Andrews' Braidmen held on to end a run of four successive league defeats, ahead of next weekend's AIB Cup semi-final showdown with Cork Con.
The quality of fare was poor in the first half as the sides cancelled each other out and the error count was high.
Shiells kicked Dungannon in front and they were looking good for a 9-0 interval lead, until their number 8 Stuart McKenzie was yellow carded and Ballymena captain Sam McKinney broke through for a pushover try on the stroke of half-time.
Shiells dinked over two drop goals to stretch the Tyrone side's advantage to eight points, but 'Gannon needed a try to add some much-needed comfort to that lead.
Team captain Paul Magee, Craig Gilroy and the highly rated Ali Birch all looked dangerous in attack, but Ballymena defended well and took their chances when they came.
Best on the day for the visitors were number 8 McKinney, winger Roger McBurney and lock Bob Young.
DUNGANNON: Neil Patterson; Chris Cochrane, Paul Magee (capt), Ethan Allen, Craig Gilroy; James Shiells, Jason Bloomfield; Glen Sinnamon, Richard Carleton, Mark Farquhar, Richard Holmes, Michael Rainey, Derek Hall, Ali Birch, Stuart McKenzie.
Replacements: Colm Heaney, Gary Maxwell, Paul Heaney, John McGuckin, Glen Telford.
BALLYMENA: Ricky Andrew; Roger McBurney, Kyle Moore, Steven Castle, Tommy Seymour; David O'Hara, Gareth Fisher; James Carson, Ryan Fisher, Simon Shawe, Darryl O'Kane, Bob Young, Andrew Kerr, Paul Pritchard, Sam McKinney (capt).
Replacements: Jake Smith, James Taggart, Joel Andrew, Chris Smyth, Paul Campbell.
Referee: Darragh McCormack (IRFU)