The Mahindra driver passed poleman Lucas di Grassi just before the mid-race car swaps and eased clear of the Brazilian in the latter half to win by a comfortable margin.
Second place for di Grassi meant he cut into Sebastien Buemi’s championship lead, but Buemi’s advantage is still a healthy 32 points after a superb recovery drive to fifth.
Rosenqvist jumped into second immediately as di Grassi’s fellow front row starter Jose Maria Lopez made a poor getaway.
Di Grassi built a gap at first and held a lead of 2.3 seconds at one stage, but Rosenqvist gradually chipped away until he was on the Abt Audi Sport driver’s tail starting their final lap before swapping cars.
Rosenqvist took advantage of di Grassi lifting and coasting early on the run to Turn 1, passing the Brazilian on the outside for a lead he would hold until the end.
Di Grassi tried to apply pressure at the start of the second stint but Rosenqvist was never threatened and, even after easing off on the final lap, won by 2.2s.
By the end of the race the second Mahindra driver Nick Heidfeld caught di Grassi, who was struggling with his battery temperature, but the German had to settle for his third-consecutive third-place finish.
Behind the podium finishers Lopez was a distant fourth, having eased clear of Jean-Eric Vergne over the second stint.
Penalty for Vergne
Vergne finished fifth on the road but picked up a five-second penalty for an unsafe release, which made the damage limitation job by Buemi – who was right behind the Techeetah driver – even more effective.
The Renault e.dams driver started in 14th after struggling with the handling of his car in qualifying, but made steady progress in the opening stint and had risen to ninth by the car swaps.
He was superb in the second stint, catching the group in front and picking off Daniel Abt, Sam Bird and teammate Nico Prost, then briefly attacked Vergne – whom he had trailed by seven seconds shortly before the pitstops – before backing off after the Frenchman’s penalty was confirmed.
Vergne’s penalty ultimately dropped him to ninth, with Maro Engel scoring the final point for Venturi.
There were concerns about tyre degradation on the Berlin Tempelhof’s airfield surface, but the race passed with no incidents of note and only one non-finisher – Mitch Evans.
The Jaguar driver suffered a problem with his first car so pit and went for fastest lap in his second car, which he achieved to bag a point for the fourth race in a row, but did not complete enough laps to be classified.