Di Resta managed to pass poleman Paffett at the start of the race, hanging tough around the outside at Paddock Hill and Druids before slipping up the inside at Graham Hill Bend.
A safety car period was triggered when the Mercedes of Lucas Auer was clipped exiting Graham Hill by Robin Frijns' Audi, with Augusto Farfus's BMW also hitting Frijns' car and sustaining damage.
But di Resta held the lead in the two-by-two formation restart, and the Scotsman held a slender advantage of less than a second before Paffett dived into the pits at the end of the eighth lap of 40 to serve his mandatory stop.
Di Resta came in the following lap but rejoined ahead of Paffett, and it was Audi driver Jamie Green assuming the lead at this point of the race as the threat of rain hung in the air.
Green stayed out until the end of the 30th lap before finally making his stop, handing the lead back to di Resta - who duly hung on to score victory by one second from Paffett to lead a Mercedes 1-2.
Rene Rast stopped early to move ahead of ex-Formula 1 driver Pascal Wehrlein and take a net third early on, and was able to close a two-second gap to the lead pair in the latter stages.
But the reigning champion couldn't find a way past Paffett and settled for third, his second podium finish of the season.
Green rejoined in fourth after making his stop, but he dropped behind Wehrlein on his outlap and then succumbed to BMW man Marco Wittmann, edging the two-time champion onto the grass on the run to Surtees in the process.
That meant Green was given a drive-through penalty, dropping the Audi driver out of the points, although Wittmann was still forced to fend off Mike Rockenfeller's Audi late on in the fight for fifth.
Philipp Eng (BMW) was seventh, ahead of a recovering Auer, while Saturday race winner Daniel Juncadella (Mercedes) and Nico Muller (Audi) rounded out the points positions.
Green ended up 15th after his penalty, only ahead of three drivers who hit trouble.
Loic Duval sustained a puncture late in the race, costing him a chance of points, Edoardo Mortara left his pitbox before his right-rear wheel was attached and was a late retirement, and Farfus retired as a result of his early damage.
|1||3||Paul di Resta||Mercedes-AMG C63 DTM||56'23.282|
|2||2||Gary Paffett||Mercedes-AMG C63 DTM||1.019|
|3||33||René Rast||Audi RS5 DTM||1.376|
|4||94||Pascal Wehrlein||Mercedes-AMG C63 DTM||11.484|
|5||11||Marco Wittmann||BMW M4 DTM||14.312|
|6||99||Mike Rockenfeller||Audi RS5 DTM||14.841|
|7||25||Philipp Eng||BMW M4 DTM||17.239|
|8||22||Lucas Auer||Mercedes-AMG C63 DTM||17.972|
|9||23||Daniel Juncadella||Mercedes-AMG C63 DTM||18.505|
|10||51||Nico Müller||Audi RS5 DTM||20.798|
|11||16||Timo Glock||BMW M4 DTM||21.764|
|12||4||Robin Frijns||Audi RS5 DTM||22.007|
|13||47||Joel Eriksson||BMW M4 DTM||23.197|
|14||7||Bruno Spengler||BMW M4 DTM||31.998|
|15||53||Jamie Green||Audi RS5 DTM||33.359|
|16||28||Loic Duval||Audi RS5 DTM||2 Laps|
|17||48||Edoardo Mortara||Mercedes-AMG C63 DTM||3 Laps|
|Ret||15||Augusto Farfus||BMW M4 DTM||-|