Hamlin, who started on the pole, got into second with 45 of 500 laps remaining then patiently ran down DiBenedetto, finally passing him with 11 laps to go. DiBenedetto remained close but could not get another chance to pass Hamlin back before the finish.
The win is Hamlin’s fourth of the 2019 NASCAR Cup Series season and second in the last four races. It’s also the 35th victory of his career.
“I’m just want to say sorry to Matt DiBendetto and Mike Wheeler (his crew chief). I hate it,” Hamlin said. “I know a win would mean a lot to that team but I got to give 110 percent to my whole team. Just sorry.
“This team gave me a great car. Everybody is doing an amazing job. We’re just kicking ass.”
Asked how he ran down DiBenedetto, Hamlin said, “Between my spotter and crew chief, they just stayed on me to not be anxious. I took my time. I had plenty of time. I just worked him over and worked him over.
“I didn’t want to show him the bottom (lane) until I knew I could make the pass. So I ran the top, ran the top, got the position on the bottom and finished it. We had a great car, came back from a couple laps down and here we are.”
Brad Keselowski finished third, Kyle Busch was fourth and Chase Elliott completed the top-five.
Rounding out the top-10 were Kyle Larson, Clint Bowyer, Daniel Suarez, Kurt Busch and Ryan Blaney.
Following the break between Stages 2 and 3, Kyle Busch elected not to pit and took over the lead when the race returned to green on Lap 260. He was followed by Elliott, Erik Jones, Keselowski and Martin Truex Jr.
On Lap 265, Keselowski came off Turn 2 and got around Kyle Busch to take the lead for the first time in the race.
With 200 laps remaining in the race, Keselowski maintained a small lead over Kyle Busch with Elliott in third, followed by Truex and Jones.
By Lap 330, Keselowski remained the leader followed by Kyle Busch but Jones had moved his way into the third position.
Kevin Harvick, who went to the garage just before the conclusion of Stage 2, was officially declared out of the race on Lap 341 with a clutch issue. He led 28 laps early in the race.
Kyle Busch got a good run off Turn 2 on Lap 352 and went to the inside of Keselowski to take the lead.
On Lap 362, Joey Logano and Alex Bowman made contact off Turn 2 to bring out a caution. Just before the caution, Truex had tagged the wall and was forced to drop to pit road for repairs.
The lead-lap cars elected to pit with Kyle Busch the first driver off pit road. He led the way on the restart on Lap 371, followed by Jones, Keselowski, Elliott and Bowyer.
On Lap 373, a multi-car wrecked erupted in Turn 2 involving Blaney, Michael McDowell, David Ragan, Jimmie Johnson and Ricky Stenhouse Jr. Blaney appeared to have a tire go down.
Just before the caution, Jones got around Kyle Busch to take the lead for the first time in the race.
On the restart on Lap 388, Jones led the way followed by Kyle Busch, Elliott, DiBenedetto and Keselowski.
DiBenedetto got around Jones off Turn 2 on Lap 396 to take the lead for the first time. Jones tagged the wall just after the move and fell off the pace. He eventually went to pit road under green for repairs.
With 90 to go, DiBenedetto had moved out to a 1.2-second lead over Elliott. Keselowski was third, Hamlin fourth and Kyle Busch fifth.
After 440 laps, Elliott was closing on DiBenedetto for the lead as Keselowski ran close behind in third.
With 45 laps remaining, Hamlin moved into the second position as Keselowski ran third, Elliott fourth and Kyle Busch fifth.
With 25 to go, DiBenedetto maintained a small but consistent lead over Hamlin as Keselowski remained in third.
On Lap 490, Hamlin finally worked his way around DiBenedetto to reclaim the lead.