Max Verstappen recovered well from a grid penalty to finish second with a time of 1,2454.214 hours, but saw his Formula One championship lead cut to eight points by Hamilton.
Back-to-back wins for the defending and seven-time champion Hamilton in Brazil and Qatar have moved him within eight points, with two races left.
Hamilton claimed his seventh season win and 102nd overall ahead of Verstappen at the flood-lit Losail International Circuit where his Mercedes had already been superior over Verstappen's Red Bull in qualifying.
Spaniard Fernando Alonso, driver of the Alpine team and twice world champion, ranked third with a time of 1.25.27.928 hours, while Mexican Sergio Perez, driver of the Red Bull team, came fourth with a time of 1.25.30.777 hours. French Esteban Ocon, driver for the Alpine team, completed the list of the top five with a time of 1,2549,041 hours.
Verstappen, who took a bonus point for fastest lap, was hit with a five-place grid penalty earlier yesterday and Bottas lost three shortly before the start as stewards ruled both had ignored yellow flags in qualifying, dropping Verstappen from second to seventh and Bottas, who did not finish, from third to sixth.