Munster secured a first win in Belfast since 2016 after an extremely hard-fought battle at the Kingspan Stadium on Friday night.
Stephen Archer and Keith Earls were the try-scorers with Munster leading 15-3 at the interval.
Ulster pushed hard after the break with Rob Herring and Sean Reidy touching down but the Munster defence held firm and the trusty boot of Joey Carbery steered the visitors home.
Greencore Munster Rugby Academy man Alex Kendellen was Player of the Match after another outstanding display from the 21-year-old.
The victory moves Munster above Ulster on points difference with Johann van Graan’s men third in the table with two games remaining in the regular season.
Munster face Cardiff at Musgrave Park next Friday night with tickets available here.
A late switch to the Munster line-up saw Jason Jenkins start in place of Thomas Ahern who moved to the bench after feeling unwell on Thursday night.
A John Cooney penalty on seven minutes gave Ulster the lead after a Munster high tackle with the hosts earning the field position after winning an early scrum penalty.
The Munster response was perfect and Carbery stretched the Ulster defence with a long pass out to Shane Daly before a high tackle on Carbery allowed the out-half kick Munster level.
Chris Farrell was pinged at the breakdown and Ulster kicked to the corner but Alex Kendellen and Jack O’Donoghue won back possession as they looked to maul over.
Munster hit the front on 21 minutes as Archer crossed from close range.
The sequence started when Jason Jenkins spoiled an Ulster lineout and Daly gathered Craig Casey’s box kick.
Ulster eventually conceded a penalty and Munster went to the corner. Although the lineout didn’t go to plan, O’Donoghue was quick off the mark to grab possession and get Munster to within five metres of the Ulster line.
The forwards did the rest with Archer crossing from close range try with Carbery’s conversion making it 10-3.
Earls was in for Munster’s second try on 27 minutes. Great hands from Damian de Allende, Jenkins and Jean Kleyn started the move before de Allende spread the ball wide to Carbery, Farrell picked a great line to burst through and gave it wide for Earls to finish.
Carbery was unable to add the touchline conversion but Munster led 15-3 after 28 minutes.
Munster got the first score after the break through a Carbery penalty but Ulster hit back through Herring.
Stuart McCloskey was the instigator as he caught Carbery’s crossfield kick and broke up the left wing.
The scramble Munster defence conceded a penalty with Ulster going to the corner and mauling over. John Cooney’s conversion made it 18-10.
Replacement Thomas Ahern came up with a vital lineout steal on our five-metre line as Ulster threatened again on 52 minutes.
Academy man Kendellen impressed once again and he won a breakdown penalty as Ulster attacked from their own half. Carbery struck the tricky penalty superbly to make it 21-10 to Munster.
Replacement Chris Cloete came up with a fantastic poach to win a penalty immediately after coming on as Ulster looked threatening.
It was very unlucky for the flanker as he was injured winning the penalty and had to depart with Academy hooker Scott Buckley coming on in the back row after 65 minutes.
Ulster enjoyed a late surge with Daly sin-binned for going in the side with Munster under huge pressure.
Reidy dived over for Ulster’s second try on 75 minutes and Nathan Doak’s conversion made it 21-17 with four minutes to go.
Munster were able to manage the final five minutes well with John Ryan getting a vital boot to the loose ball to keep Ulster pinned back.
Carbery kicked a late penalty to move Munster seven in front and that’s how it stayed.
URC Round 16 Round-Up
Munster move up to third in the table.
Alex Kendellen was named Player of the Match.
Chris Cloete departed with a neck injury and John Hodnett with a knee injury. Both players will be assessed by the medical department.
Munster: Mike Haley; Keith Earls, Chris Farrell, Damian de Allende, Shane Daly; Joey Carbery, Craig Casey (Conor Murray, 63); Jeremy Loughman (Josh Wycherley, 52), Diarmuid Barron, Stephen Archer (John Ryan, 52); Jean Kleyn (Fineen Wycherley, 60), Jason Jenkins (Thomas Ahern, 52); Jack O’Donoghue (C), John Hodnett (Chris Cloete, 64) (Scott Buckley, 65), Alex Kendellen.