Rosberg wins Austrian Grand Prix
Hamilton's hopes of overtaking his Mercedes team-mate suffered a setback around the halfway stage when the Briton was handed a five-second penalty after infringing a white lane on a pit exit.
Rosberg stayed in command at the front to capture his third race of the season and the 11th of his career, moving to within 10 points of Hamilton in the standings.
"It's an awesome feeling to win again here," Rosberg said in the podium interviews.
"The start made the race. It was a great start and I managed to defend in the first couple of corners. I was really happy with the car and to see the gap open up to Lewis."
Rosberg got past pole-sitter Hamilton at the first turn but the safety car was immediately out after Kimi Raikkonen and Fernando Alonso collided on turn two.
Alonso's McLaren mounted Raikkonen's Ferrari as both slid along a crash barrier but both drivers climbed out unhurt.
Alonso, who had started on the last row alongside team-mate Jenson Button after grid penalties, went to the medical centre to be checked before giving the all-clear.
"I'm OK. It was obviously quite scary," Alonso said.
"Kimi had a lot of wheel spin out of turn two. We were overtaking him and he lost the car on the left.
"I was on the left. I could not see anything. I looked in the mirror and saw a car under my car. I jumped quickly to see he was OK. I saw he was so was happy."
McLaren's disastrous season continued when Button was called in after 10 laps with a technical problem.
"A brief and very disappointing Austrian GP for the team," McLaren said via Twitter. "Time to get our heads down for testing and Silverstone."
Rosberg got the better of the pit stops just before the halfway mark of the 71 laps, gaining some two seconds over Hamilton to lead by just over four seconds.
Hamilton was then slapped with a five-second penalty after crossing a white line on emerging from the pit lane, leaving the world champion with an uphill battle against Rosberg, who remained comfortably in front and took the chequered flag 3.8 seconds up on Hamilton (8.8 seconds including the time penalty).
"Nico did a fantastic job today," Hamilton said.
"He was quicker during the race. I had a bad start which lost me ground. In the second stint it was just about making the distance so that's what we tried to do."
Felipe Massa in a Williams held off Ferrari's Sebastian Vettel to capture third, a second successive podium for Williams after their third place from Valtteri Bottas in Canada two weeks ago.
Vettel lost time on his pit stop when mechanics had trouble fixing the right rear tyre, costing him a place on the podium.
The four-time world champion put intense pressure on Massa over the last laps but had to make do with fourth, followed by Bottas and Force India's Nico Huelkenberg.
The remaining top 10 places were completed by Pastor Maldonado (Lotus), Max Verstappen (Toro Rosso), Sergio Perez (Force India) and Daniel Ricciardo (Red Bull).
With the F1 season now moving to the British Grand Prix at Silverstone in two weeks, Hamilton has 169 points in the standings, with Rosberg on 159 and Vettel on 120, with Raikkonen next up on 72 and Bottas on 67.