Han hade en ursinnig uppgörelse med Marco Arop som blev tvåa med 1.41,20. Förhandsfavoriten Djamel Sedjati låg sist efter klockringen och hade för lång väg fram när han försökte avancera på bortre långsidan.
Algeriern blev trea på 1.41,50 och Bryce Hoppel, USA, blev utan medalj trots 1.41,67 och nytt nationsrekord i tidernas bästa toppbreddlopp. Hoppel är sjunde löpare genom tiderna.
Strax efter finalen rapporterar franska medier att fransk polis gjort ett tillslag mot algeriska laget i OS-byn och inlett en förundersökning, den ska ha utförts i torsdags.
Kenyanen David Rudisha har världsrekordet med 1.40,91 från OS-finalen 2012.
800 meter final:
1. Emmanuel Wanyonyi, Kenya, 1:41.19.
2. Marco Arop, Kanada, 1:41.20.
3. Djamel Sedjati, Algeriet, 1:41.50.
4. Bryce Hoppel, USA, 1:41.67.
5. Mohamed Attaoui, Spanien, 1:42.08.
6. Gabriel Tual, Frankrike, 1:42.14.
7. Tshepiso Masalela, Botswana, 1:42.82.
8. Max Burgin, Storbritannien, 1:43.84.