The German driver, runner-up to his Mercedes teammate in last year's Formula One championship, took an aggressive inside line to shoot past Hamilton heading into the first turn in an eventful race featuring a heavy crash between Kimi Raikkonen and Fernando Alonso and several more retirements.
Rosberg's third win this season took his career tally to 11, and cut Hamilton's overall lead to 10 points.
"The start made the race. It was a great start and I managed to defend in the first couple of corners," Rosberg said. "I was really happy with the car and to see the gap open up to Lewis."
Felipe Massa finished third for Williams, matching his finish from last year. In the fight for the last podium spot, Massa held off Sebastian Vettel's Ferrari by just 0.6 seconds.
On another terrible day for McLaren, Jenson Button retired to join Alonso in the garage.
Rosberg likes the Red Bull Ring, where he won from third on the grid last year. This time he did it starting from second.
"Yeaahhh!" a jubilant Rosberg shouted on his radio after crossing the line.
He has good reason to be happy, having beaten Hamilton in three of the past four races.
"I was able to push from the first lap all the way," Rosberg said. "This year I'm just doing a little bit better in races."
It was a frustrating day for defending champion Hamilton, who received a five-second penalty for incorrectly leaving the pit lane. He got penalized for going over the white line when straying to the left after coming out of the pits following his tire change.
Hamilton's seventh pole in eight races, achieved late in Saturday's qualifying, was perhaps more precarious than on another track.
"Nico did a fantastic job today," Hamilton said. "I had a bad start which lost me ground. I had a problem with the revs."
Rosberg made an aggressive start, giving Hamilton no time to settle as he screeched past him.
Within moments of that, there was great drama at the back as two former world champions collided coming out of turn 2.
Raikkonen appeared to lose control of his Ferrari and swerved into Alonso's McLaren, which then ended up on top of the Ferrari as they scraped along the barriers.
A worried Jenson Button, Alonso's teammate, asked over the radio: "Is Fernando OK?"
After 10 laps, Button could check for himself, after trundling back to the garage.
There was no animosity from either driver as Alonso and Raikkonen shook hands, before walking away from the wreckage of their cars unharmed. They were lucky, considering the state of Alonso's car, which was upside down on the Ferrari.
Alonso has now retired from the past four races and has yet to score a point. Button has scored only four.
After six laps behind the safety car, the race resumed with Rosberg comfortably holding his lead.
With 23 of the 71 laps gone, Hamilton drifted 3 seconds behind Rosberg, with Vettel lagging 10 seconds back.
Rosberg changed for new tires on lap 34, as Hamilton took the lead.
It was brief, however, as two laps later the British driver came in for his new tires. His stop was slower than Rosberg's and the time penalty made it worse.
"I have no idea to be honest," Hamilton said when asked to explain his time penalty. "I don't think I went over anything."
Vettel's tire change on lap 35 proved problematic as the new rear right tire got jammed for a few seconds, and that left the German driver chasing Massa for third spot.
He almost passed him on the 68th lap, but the Brazilian held on.
"It was a fantastic race today, we managed to get Sebastian with his problem," Massa said.
Massa has now secured 40 career podiums and broken the 1,000 career points barrier.
"My son said I would finish third today — and he was right," the 34-year-old Brazilian said.
Vettel's title bid for a fifth F1 title is wavering and he is now 49 points behind Hamilton heading into next month's British GP.
Toro Rosso's Carlos Sainz Jr. retired, as did Manor Marussia's Will Stevens and Lotus driver Romain Grosjean. In all, six cars retired before lap 40.Suggest a correction