Yvan Muller withstood a charging drive from Rob Huff to take his third consecutive World Touring Car victory and close to within eight points of the Briton in the drivers' standings.
Starting from pole, Muller was followed by Huff as the field made its way cleanly through Turn 1, and the pair had opened a gap of more than three seconds by the end of the first lap as the field squabbled behind them.
Initially Muller had the edge, but on lap four Huff set the race's fastest lap to close to within 1s - only to then run too deep and into the gravel at the left-hand hairpin of Hasseroder, costing him around seven seconds.
That marked the start of a remarkable comeback charge from the Briton, with Huff often lapping more than one second faster than anyone else in the race.
By the penultimate lap the gap to Muller was back to 1s, and in the final corners Huff was close enough to look to the inside, but Muller held his nerve to clinch victory - his third in the past three races - by just 0.289s.
Third was claimed by SUNRED SEAT's Gabriele Tarquini, the Italian enjoying a relatively quiet race once he had passed the fast-starting ROAL BMW of Tom Coronel.
Robert Dahlgren's race was far more adventurous, the Polestar Volvo driver dropping as low as seventh at the start before fighting back to finish fourth.
Dahlgren was the only driver able to match the pace of the lead Chevrolets, but ran out of time in his bid to close down Tarquini - finishing 0.855s behind him.
Alain Menu finished fifth in the third Chevrolet Cruze, ahead of the Wiechers BMW of Stefano D'Aste - who edged out SUNRED SEAT's Michel Nykjaer in the battle for the top independent spot.
Pepe Oriola finished just behind Nykjaer in eighth, while fellow driver SUNRED driver Alexey Dudukalo finished ninth in the race but could yet be demoted after a last corner clash with Franz Engstler - Dudukalo tipping the German into a spin as he attacked around the outside of the penultimate bend.
Tenth on the road went to Coronel, who had run as high as third but dropped down the order as the race progressed.
Results - 14 laps:
Pos Driver Team/Car Time/Gap
1. Yvan Muller Chevrolet 25m54.624s
2. Rob Huff Chevrolet + 0.289s
3. Gabriele Tarquini SUNRED SEAT + 13.810s
4. Robert Dahlgren Polestar Volvo + 14.665s
5. Alain Menu Chevrolet + 18.578s
6. Stefano D'Aste Wiechers BMW + 25.058s
7. Michel Nykjaer SUNRED SEAT + 33.795s
8. Pepe Oriola SUNRED SEAT + 34.362s
9. Aleksei Dudukalo SUNRED SEAT + 43.187s
10. Tom Coronel ROAL BMW + 45.665s
11. Mehdi Bennani Proteam BMW + 46.105s
12. Javier Villa Proteam BMW + 46.328s
13. Kristian Poulsen Engstler BMW + 46.627s
14. Darryl O'Young Bamboo Chevrolet + 46.919s
15. Norbert Michelisz Zengo BMW + 47.560s
16. Franz Engstler Engstler BMW + 55.237s
17. Yukinori Taniguchi Bamboo Chevrolet + 1m29.885s
18. Ibrahim Okyay Borusan BMW + 1m52.554s
19. Fabio Fabiani Proteam BMW + 1 lap
Tiago Monteiro SUNRED SEAT 7 laps
Fredy Barth SUNRED SEAT 5 laps