Ryan Crouser of the United States broke the Olympic shot put record to secure the gold medal at Rio 2016.
Crouser produced a throw of 22.52 metres, breaking Ulf Timmermann's previous record of 22.47m that had stood since Seoul 1988 to top the podium.
Joe Kovacs' effort of 21.78m was enough for silver, while Tomas Walsh of New Zealand took bronze with 21.36m.
Despite winning at the World Championships in Beijing last year with a throw of 21.93m, Kovacs was beaten by Crouser at the US Olympic trials last month.
Kovacs started strongly with a throw of 21.78m in his first attempt, but Crouser moved past him into the lead with a personal best 22.26m in the third round before uncorking the record throw on his fifth.
Kovacs fouled on three of his subsequent five attempts but his opening effort was enough to keep him in second place.