Polesitter Duval got away cleanly from pole position to retain the lead into Turn 1, with Ferdinand Habsburg moving up to second after rocketing away from fourth on grid.
While Duval could hold station out front, Habsburg couldn't keep up with the factory Audi driver and started dropping down the order, slipping behind Mike Rockenfeller to sixth by lap 12.
That allowed Frijns to move back up to second, with Rene Rast assuming second having passed his title rival Nico Muller on the opening lap of the race.
Duval was the first of the leaders to make his pitstop on lap 16, with Rast and Muller following him a lap later.
Rast's stop was three seconds slower due to a delay in changing the front-right tyre, which was just enough for Muller to snatch third spot from the reigning champion.
Meanwhile, at the front, Frijns started closing in on Duval for the lead of the race, bringing the deficit down to 0.8s on lap 25.
Duval responded to the Abt driver's speed to extend his advantage back up to second, while Muller and Rast also joined the battle for victory.
However, Duval's pace began to fade and he lost six tenths on lap 29 alone, bringing Frijns and the rest of the chasing pack into play.
Frijns got a better exit out of the turn 5 hairpin and pulled alongside Duval on the back straight, before making a move into the following corner to take the lead for the first time.
Muller was unable to pass Duval for second, giving Frijns the breathing space to score his first-ever victory in the DTM, which he fittingly achieved in front of a limited home crowd at Assen.
Rast couldn't cope with the pace of the top three and fell back to fifth place behind Mike Rockenfeller, who was able to take advantage of fresher tyres to pass the reigning champion on lap 33.
Jonathan Aberdein finished as the top BMW driver in sixth, more than 25 seconds behind race winner Frijns as the Munich-based manufacturer failed to match the performance of Audi.
Habsburg eventually finished seventh, but crucially ahead of the factory BMWs of Sheldon van der Linde and Timo Glock.
A late pitstop allowed Formula 1 race winner Robert Kubica to score his first point of the season in 10th, the ART BMW driver clearing WRT Audi's Harrison Newey and Lausitzring Race 2 winner Lucas Auer in the final few laps.
The race had to be shortened due to a delay in wheeling Jamie Green's Audi back into the pits after he stalled on the formation lap.
Green joined the action midway through the race, finishing 14 laps down in 16th position.
|1||4|| Robin Frijns ||Audi RS5 Turbo DTM 2020||25|
|2||28|| Loic Duval ||Audi RS5 Turbo DTM 2020||0.505||18|
|3||51|| Nico Müller ||Audi RS5 Turbo DTM 2020||0.950||15|
|4||99|| Mike Rockenfeller ||Audi RS5 Turbo DTM 2020||3.188||12|
|5||33|| René Rast ||Audi RS5 Turbo DTM 2020||13.735||10|
|6||27|| Jonathan Aberdein ||BMW M4 Turbo DTM 2020||26.768||8|
|7||62|| Ferdinand Habsburg ||Audi RS5 Turbo DTM 2020||30.604||6|
|8||31|| Sheldon Van Der Linde ||BMW M4 Turbo DTM 2020||31.336||4|
|9||16|| Timo Glock ||BMW M4 Turbo DTM 2020||36.888||2|
|10||8|| Robert Kubica ||BMW M4 Turbo DTM 2020||43.576||1|
|11||22|| Lucas Auer ||BMW M4 Turbo DTM 2020||45.131|
|12||10|| Harrison Newey ||Audi RS5 Turbo DTM 2020||46.632|
|13||25|| Philipp Eng ||BMW M4 Turbo DTM 2020||56.845|
|14||11|| Marco Wittmann ||BMW M4 Turbo DTM 2020||1'05.216|
|15||13|| Fabio Scherer ||Audi RS5 Turbo DTM 2020||1'23.093|
|View full results|