Richard Hibbard marked his 100th appearance for the Ospreys with a try in a deserved win over Munster.
Richard Fussell scored the opening try and the home side's domination up-front resulted in a second half penalty try.
Hibbard crossed for a third try while Dan Biggar produced a fine kicking performance with 15 points.
Munster's woes were compounded late on when replacement Damien Varley was sent-off.
It was the Ospreys' first home victory of the season and their fourth consecutive win over the Irish side.
Dan Biggar slotted over two penalties during the opening 12 minutes to give the home side a 6-0 lead.
And the Ospreys extended their advantage on 20 minutes with the evening's first try.
Andrew Bishop's break down the middle proved decisive and the ball eventually found its way out to Fussell, who crossed in the corner.
Biggar added the extras as the visitors were struggling to make any headway in the game, and although they secured their first points through a Ronan O'Gara penalty the home side were in control.
Pressure from the home forwards resulted in a further penalty for the home side, but Biggar failed with his kick.
Munster rallied late on in the half and they had the final word with O'Gara scoring his second penalty on the stroke of half-time.
O'Gara picked up where he had left off in the first half with another successful penalty after Ryan Jones had been penalised.
But as the visitors were inching their way back into the game they were reduced to 14 men when Tommy O'Donnell was shown a yellow card.
Biggar's penalty restored a seven point advantage as the Ospreys continued to dominate up front.
That domination ultimately led to a penalty try being awarded after 54 minutes and Biggar completed the simple task of converting to make it 23-9.
A fourth penalty from O'Gara got Munster into double figures before he was replaced by Ian Keatley.
Fussell sprinted clear in sight of a second try but the full-back was matched for pace by Keith Earl, who halted his run and a certain score.
A break in play allowed the Ospreys to make a number of replacements, with Wales prop Adam Jones making his first appearance of the season.
Try scorer Fussell turned provider when he played a part in the move which resulted in man-of-the-match Hibbard crossing the whitewash.
Biggar successfully converted before Munster replacement Varley was dismissed with eight minutes remaining for lashing out with his boot.
Ospreys failed to score a fourth try that would have secured a bonus point but they move up to ninth in the Pro12 table.
Ospreys: Fussell, Dirkson, Bishop, Beck, Isaacs, Biggar, Fotuali'i, Bevington, Hibbard, Jarvis, A. Jones, Evans, R. Jones, Tipuric, Bearman.
Replacements: Morgan for Beck (75), Webb for Fotuali'i (74), D. Jones for Bevington (63), Baldwin for Hibbard (69), A. Jones for Jarvis (59), Stowers for R. Jones (74), Thomas for Bearman (59).
Not Used: R. Jones.
Munster: Hurley, Howlett, Earls, Laulala, Zebo, O'Gara, Murray, du Preez, Sherry, Archer, D. O'Callaghan, Holland, O'Donnell, Ronan, Butler.
Replacements: Downey for Zebo (71), Keatley for O'Gara (61), Stringer for Murray (14), Kilcoyne for du Preez (55), Varley for Sherry (55), Botha for Archer (55), D. Ryan for Holland (55), O'Mahony for Butler (55).