Bottas took a knee as he received the winners’ trophy and the podium trio held up a black T-shirt with “End Racism” written on it.
The race was interrupted three times by a safety car and nine of 20 drivers abandoned, including both Red Bulls of Max Verstappen and Alexander Albon — who tried to overtake Hamilton on the outside with 10 laps left, touched wheels and flew off track.
“I dodged a few bullets today,” Bottas said after the eighth F1 win of his career.
Hamilton was given a five-second time penalty for causing the collision — dropping from second to fourth — having earlier been hit with a three-place grid penalty after an incident in Saturday's qualifying was reviewed by stewards.
Although Bottas started from pole position and Hamilton from fifth, it looked like a straight fight between the two Mercedes drivers as has been the case so often in recent years.
“It felt like a victory today. Second place is something I never would have expected," said Leclerc, who started from seventh. "I will rate this as one of my best races, I didn't do many mistakes."
Norris sent McLaren's garage into raptures — and threw social distancing out of the window amid the euphoria as CEO Zak Brown hugged everyone in sight — with third place.
His jubilation was understandable.
It was the 20-year-old British driver's first career podium and his superb final lap was the fastest of an exciting opening race. Norris became the youngest British driver to secure a podium finish and the third youngest ever in F1. Only Verstappen and Lance Stroll were younger.
All drivers wore “End Racism” T-shirts before the race, but six drivers did not take the knee: Verstappen, Leclerc, Kimi Raikkonen, Daniil Kvyat, Antonio Giovinazzi and Carlos Sainz Jr.
Hamilton, the only Black driver in F1, wore a T-shirt with Black Lives Matter on the front and End Racism on the back.
Verstappen was chasing a hat trick of wins at the Red Bull Ring, but his race ended early with a power failure. Sebastian Vettel’s miserable form from last season carried over as he finished 10th.
Hamilton's three-place grid penalty was for failing to slow under a yellow flag late in Saturday's qualifying and it pushed Verstappen up to second place on the grid. Norris jumped to third and Albon to fourth.
Bottas made a strong start from pole position while Verstappen just held off Norris.
Hamilton took four laps to overtake Norris and move into fourth, and another five to overtake Albon in third. But he was gifted a position as Verstappen ground to a halt moments later.
Approaching the midway point of the race, Magnussen went off track after trying to overtake Esteban Ocon’s Renault. The safety car was deployed for two laps, allowing Hamilton to claw back a few seconds on Bottas.
When the race restarted on Lap 30, Bottas got away cleanly.
But moments later Vettel tried to pass Sainz Jr. on the outside but misjudged his attack, spinning his car after nudging into the side of the McLaren and losing several positions.
Hamilton lurked right behind Bottas for the next 20 laps but could not find an angle to attack and both drivers were then warned over team radio to stay off the kerbs to protect their gearboxes.
The safety car came out a second time on Lap 52 and again soon after the right tire flew off the front of Raikkonen’s car and narrowly missed hitting Vettel’s Ferrari just behind.
Then after that restart, Albon made a daring and seemingly clean move on the outside of Hamilton, who appeared to impede him just as he was passing.