Ulster shaded the first Irish derby of the RaboDirect PRO12 season 20-19 to go top of the table and stretch their winning run to three games.

In a pulsating end, Ulster's blanket defence held out as wave after wave of Munster attacks were repelled.

Replacement Ronan O'Gara was unwilling and then unable to get within range to win the game with a trademark drop goal which saw Rob Penney's men fall to their first defeat.

Five penalties from Paddy Jackson along with an excellent try from man of the match Jared Payne got Ulster home in a game where they trailed Munster by 10 points towards the end of the first half.

But they fought back to hold the lead by a solitary point on two occasions, the second time seeing them hold out for the last 13 minutes for four valuable points on Stephen Ferris' 100th appearance for Ulster.

Ian Keatley got Munster under way with a second minute penalty after a Nick Williams turnover had put Andrew Trimble under pressure near his own line.

The Munster outside half then bagged a second shot five minutes later from longer range after Lewis Stevenson was penalised for holding on at a ruck.

The visitors stretched their lead to nine points with a 12th minute Keatley drop goal after good approach work from his pack.

Ulster had to respond and surges from Darren Cave and Sean Doyle saw Munster infringe and Jackson made no mistake from the tee.

They really should have scored three minutes later after a great break from Payne ultimately came to nothing when Paul Marshall could not hold Trimble's hard pass off the ground.

Payne made ground along the right wing just before the half hour mark and from a subsequent scrum, Munster were penalised but Jackson's penalty struck the upright and stayed out.

He made amends on 34 minutes after Munster strayed offside but then Ulster kicked high from the restart.

The visitors immediately countered at pace with substitute Keith Earls involved twice in a move that swept left and right before the Ireland international scored near the right corner.

Keatley converted to give Munster a 10-point lead at 16-6 which Jackson managed to narrow with a penalty as the half's final act.

Three minutes into the second half he again bisected the posts, after Munster were penalised following a scrum, making the score 16-12 to the southern province.

Ulster took the lead for the first time after a pulsating move saw Payne make the line for an unconverted score that edged them 17-16 in front.

Ulster's tails were up and a huge driving maul near the Munster line ended with visiting flanker Sean Dougall being shown yellow by Alain Rolland.

Somehow, though, Ulster lost the subsequent scrum and 14-man Munster - now with Conor Murray on the field - survived.

It was Munster who scored next and just before Dougall's return Keatley struck another drop goal to put them two points in front.

But Jackson's fifth penalty put Ulster back in front by a single point after 68 minutes.

To their credit the home side held out as Munster kept the ball for the closing minutes but failed to get any form of score.