Formula One leader Max Verstappen led from start to finish as he won the Austrian Grand Prix for Red Bull on Sunday.
Seven-time world champion Hamilton was a distant fourth, behind Finnish team-mate Valtteri Bottas in second and McLaren's Lando Norris in third.
It was the fifth win in a row for Red Bull.
The win takes Verstappen 32 points clear of Mercedes' Hamilton in the championship.
Verstappen, who started from pole position for the third straight race and has now won on three successive weekends, also set the fastest lap to take his tally to 182 points after nine rounds.
Hamilton has 150 and Red Bull are 44 points clear of Mercedes in the constructors' standings.
"The car was on rails," said Verstappen of his fifth win of the season and second from back-to-back races at his team's home circuit.
"Every tyre set we put on it was really enjoyable to drive. I'm a bit amazed how today went, I didn't expect it to be like this."
A sea of orange-shirted Dutch fans rose to salute their hero as he took the chequered flag in front of the biggest crowd of the season so far after an easing of COVID-19 restrictions.
"We're miles away from them so we've got a lot of work to do," said Hamilton of his afternoon.
Bottas took second after Mercedes initially told him not to race Hamilton, who was ahead, and then gave the go-ahead with 20 laps to go as it became apparent the Briton's car was damaged and Norris was closing fast.
Norris, who had started on the front row for the first time but dropped to fourth after a five-second penalty for pushing Verstappen's team-mate Sergio Perez off the track, passed Hamilton on the track.
The youngster, voted driver of the day for his performance, felt the penalty was unjust.
"He (Perez) tried to go around the outside which is a bit stupid, and he ran off the track himself, I didn't even push him," he said.
Ferrari's Carlos Sainz was fifth, with Perez sixth and Australian Daniel Ricciardo racing from 13th on the grid to seventh.
Charles Leclerc was eighth for Ferrari, Pierre Gasly ninth for AlphaTauri, and double world champion Fernando Alonso took the final point for Alpine after dashing the hopes of Williams' George Russell.
Russell, starting eighth, had been 10th with five laps to go, as former champions Williams chased their first point in two years.