The defending two-time champion had been trailing Rosberg until the pair collided on Turn Two of the Red Bull Ring, with the German losing his front wing and slipping to fourth place.
Second-placed Max Verstappen for Red Bull and Ferrari's Kimi Raikkonen completed the podium behind a triumphant Hamilton.
"I was on the outside (of the turn) it wasn't me who crashed," said Hamilton over his team radio.
Greeted by a chorus of boos on the podium, with most of the local fans appearing to support Rosberg, Hamilton was unrepentant.
"Nico made a mistake into Turn One so I had an opportunity in Turn Two. l left a lot of room on the inside and he locked up and went into me. He had a problem with his brakes potentially.
"I'm here to win," he added.
The victory, the 46th of his career, moves him to within 11 points of championship leader Rosberg, who was clearly unhappy about his teammate's overtaking tactics when questioned by various media outlets.
Another unhappy man was Mercedes boss Toto Wolff, who hammered his fist in anger as the last lap drama unfolded and labeled it "brainless" on social media. He later told reporters that he was considering introducing team orders.
"We are looking like a bunch of idiots and it is disrespectful to 1,500 people (at Mercedes) who work their nuts off to prepare the cars and this is why it needs to end.
"I hate team orders. We owe it to the fans to let them race, but if every race ends up in a collision between teammates, it's not what we want."
Stewards later handed Rosberg a 10-second penalty for his part in the incident and for racing on with a damaged car, but he still retained fourth place.
It was the culmination of a drama-filled race with a number of notable performances, not least a superb sixth place for Britain's Jenson Button in the McLaren Honda and an unexpected 10th and a point for German Pascal Wehrlein in the Manor.
Former champion Button briefly led the race during the first round of pit stops and eventually finished just behind Daniel Ricciardo in the second Red Bull.
Frenchman Romain Grosjean of Haas and Carlos Sainz for Toro Rosso were seventh and eighth with Finn Valtteri Bottas of Williams in ninth.
Sebastian Vettel's hopes were ended when the right tire on his Ferrari shredded just over a third distance, leading to a safety car.
Rosberg had already wrested the advantage from polesitter Hamilton after a slow first pit stop for the Briton, leaving the stage set for the showdown between the two rivals that ended so controversially.
They will next head to Silverstone for the British Grand Prix next weekend with Hamilton looking for a victory in front of his home fans to further boost his hopes of a fourth F1 title and third in succession.