Warriors made it two wins out of two in the European Challenge Cup but missed out on a try bonus point in a match of two distinct halves at Sixways on Saturday.
Warriors were impressive in the first half when they rattled up 21 unanswered points but Ospreys hit back strongly in the second period.
Warriors needed two second half penalties from Jamie Shillcock, who started in place of the injured Jono Lance, to nail down the win, their third in a row in all competitions.
Shillock finished with a match haul of 17 points and hooker Jack Singleton celebrated his 50th Warriors appearance with a try.
In the first half Warriors carried on where they left off in Paris, initially frustrating Ospreys with well-organised defence and then capitalising when they attacked.
The first try was the product of patient approach work which probed away at the Ospreys defence until a gap appeared and Shillcock went over on the overlap and added the conversion for good measure.
Five minutes later Warriors appeared to be under pressure on their own scrum on halfway but Matti Williams tidied up superbly and then made a decisive break which was intelligently supported by captain-for-the-day Wynand Olivier who crossed under the posts to leave Shillock with a straightforward conversion.
Warriors then had to weather a period of Ospreys pressure which included driving mauls from two five metre lineouts. Ospreys scented a try but they were held up from the second attack and Warriors were awarded the scrum.
Excellent lineout work from Darren Barry and clever box kicking from Mike Heaney also helped to repel Ospreys who paid the penalty for conceding a succession of penalties just before half-time.
Shillcock found touch on Ospreys’ 22, Matt Cox won the resulting lineout and the pack arrived in numbers to shunt Singleton over.
Shillcock’s conversion gave Warriors a 21 points lead at the interval but it was Ospreys who scored the first points of the second period.
They crabbed forward from a lineout on Warriors’ 22 then moved the ball right to centre Cory Allen who crashed over with James Hook adding the extras.
Warriors brought on England centre Ben Te’o for his first appearance of the season as a replacement after 52 minutes but it was Ospreys who scored again when number eight Rob McCusker went over near the posts and full-back Cai Evans converted.
Warriors regrouped and responded with a storming run from Cox which was supported by Te’o. When Ospreys were penalised at the breakdown, Shillcock took the opportunity to land three points with a well-struck penalty.
That kick proved important as Ospreys scored again five minutes from time when Te’o’s pass out of a tackle was snaffled by Allen who raced away from halfway for an interception try which Evans converted.
Warriors regained their composure quickly and sealed the win when Ospreys collapsed a scrum on halfway and
Shillcock found the target after he opted to go for goal.
Warriors | 15 Perry Humphreys, 14 Dean Hammond (van Breda 60), 13 Ollie Lawrence, 12 Wynand Olivier (C) (Te’o 52), 11 Tom Howe, 10 Jamie Shillcock, 9 Michael Heaney (Arr 69), 1 Ethan Waller, 2 Jack Singleton (Annett 52), 3 Simon Kerrod (Milasinovich 55) , 4 Pierce Phillips, 5 Darren Barry (Kitchener 57), 6 Ted Hill, 7 Matti Williams, 8 Matt Cox.
Replacements | 16 Niall Annett, 17 Kai Owen, 18 Gareth Milasinovich, 19 James Scott, 20 Andrew Kitchener, 21 Jonny Arr, 22 Scott van Breda, 23 Ben Te’o.
12m | Shillcock try 5-0
13m | Shillcock con 7-0
17m | Olivier try 12-0
18m | Shillcock con 14-0
37m | Singleton try 19-0
38m | Shillcock con 21-0
44m | Allen try 21-5
45m | Hook con 21-7
58m | McCusker try 21-12
59m | Evans con 21-14
65m | Shillcock pen 24-14
74m | Allen try 24-19
75m | Evans con 24-21
79m | Shillcock pen 27-21