The German, who qualified third on Saturday, finished ahead of his team-mate and Williams drivers Valtteri Bottas and Felipe Massa, and Ferrari’s Fernando Alonso.
I had a very very fast car again but it is great to win again
Rosberg now leads Hamilton by 29 points in the drivers’ standings ahead of the British Grand Prix at Silverstone on 6 July.
“It wasn’t the easiest of races, trying to manage certain things happening, but I had a very very fast car again but it is great to win again,” said Rosberg.
“It was also great to get another one-two. It’s great to be back in Austria, it’s great to have a race here again and the fans have been fantastic.
“I am looking forward to the next one [at Silverstone], it is the home race so another one-two would be great to give the guys in the garage something to cheer about.”
Hamilton added: “I have to look at the feedback, maybe my positioning isn’t right. The guys have done a fantastic job for us to get another one-two and the fans here have been insane.”
1. Nico Rosberg Germany Mercedes-Mercedes 1hr 27m 54.976s 71 laps
2. Lewis Hamilton Britain Mercedes-Mercedes +00m 01.9s
3. Valtteri Bottas Finland Williams-Mercedes +00m 08.1s
4. Felipe Massa Brazil Williams-Mercedes +00m 17.3s
5. Fernando Alonso Spain Ferrari-Ferrari +00m 18.5s
6. Sergio Perez Mexico Force India-Mercedes +00m 28.5s
7. Kevin Magnussen Denmark McLaren-Mercedes +00m 32.0s
8. Daniel Ricciardo Australia Red Bull-Renault +00m 43.5s
9. Nico Hulkenberg Germany Force India-Mercedes +00m 44.1s
10. Kimi Raikkonen Finland Ferrari-Ferrari +00m 47.7s
11. Jenson Button Britain McLaren-Mercedes +00m 50.9s
12. Pastor Maldonado Venezuela Lotus-Renault +1 lap
13. Adrian Sutil Germany Sauber-Ferrari +1 lap
14. Romain Grosjean France Lotus-Renault +1 lap
15. Jules Bianchi France Marussia-Ferrari +2 laps
16. Kamui Kobayashi Japan Caterham-Renault +2 laps
17. Max Chilton Briton Marussia-Ferrari +2 laps
18. Marcus Ericsson Sweden Caterham-Renault +2 lap
19. Esteban Gutierrez Mexico Sauber-Ferrari +2 laps
Rtd. Jean-Eric Vergne France Toro Rosso-Renault 59 laps completed
Rtd. Sebastian Vettel Germany Red Bull-Renault 34 laps completed
Rtd. Daniil Kvyat Russia Toro Rosso-Renault 24 laps completed
MORE: The latest football news
MORE: The latest tennis news