Bowyer's pit strategy proved successful -- he made his last stop with 58 laps left and grabbed the lead for good with 24 remaining while his top pursuers all needed to refuel.
He survived a late challenge from Hamlin, winning by 0.4 seconds for his third title of the season.
Bowyer gained ground in the Chase for the Sprint Cup championship with the result, moving to within 28 points of current leader Brad Keselowski.
Johnson, second in the Chase standings, cut his deficit behind Keselowski to 14 points with his third-place finish. Hamlin, meanwhile, finished the race in third place, 15 points out.