Stemp, who went into the match with only 23 Championship wickets this season, took 6 for 37 as Durham - dismissed for 162 - fell to their fifth successive defeat.
Yorkshire won by 116 runs after batting on for seven overs of the afternoon session before declaring at 230 for 8, setting Durham a target of 279 in 61 overs.
John Morris, who had totalled 12 runs in his last six first-class innings, posed a brief threat with 22 off 20 balls. However, he went down the wicket to Stemp's second ball and was superbly caught by Bradley Parker running backwards at cover.
Durham kept going until captain Phil Bainbridge was fifth out, caught at the wicket trying to cut Stemp, who then brought victory in sight by taking two more wickets in a burst of 3 for 1 in 10 balls.
Glamorgan hung on to avoid defeat against Somerset at Swansea in a match they seemed likely to win. After dismissing Somerset for 302, Glamorgan needed 142 from 22 overs, but fell away to finish on 85 for 7 at the close.
Adrian Dale went in the first over and a superb throw by Ian Fletcher ran out Hugh Morris three overs later. The middle order failed as Glamorgan lurched to 61 for 7 and the visitors had 30 deliveries to win the game before the chase was called off in the final over.
Somerset had fought to survive in a day that saw three stoppages and 12 overs lost to rain. Marcus Trescothick scored 115 for his eighth total of 50 or more in 15 innings. Andy Hayhurst made a captain's 65 before he fell to Ottis Gibson, who returned a career-best 6 for 80, beating his first-innings figuers of 5 for 79.
Gibson's attack partner, Steve Barwick, sent down 39 overs in the match to overtake the 25-year-old Glamorgan record of 37 held by Don Shepherd.Reuse content