Matt Melbourne's two goals - one in either half - moved 14th placed Shepshed up the table and the Yeltz could have little complaints at the result.
Melbourne had already missed a chance to fire past Daniel Platt with only the keeper to beat but headed in just after on 20 minutes to make it 1-0 at half time.
Simeon Cobourne missed a good chance for Halesowen and captain Paul McCone saw a header go wide.
But when Melbourne made it 2-0 on 68 minutes it looked all over for Halesowen though their cause was helped when Shepshed hoff foad Niall Prenderville sent off for a two footed challenge on Gregory.
A handball in the box three minutes from time gave Gregory the chance to reduce the deficit and he made no mistake.
Halesowen; - Platt;Lloyd (Ali 45); Evans; Hawker; (Palmer 65); McCone (c); Flanagan; Finn; Goddard; White (Gregory 65); Cobourne; Manning.
Unused subs: Brookes; Scott