The victory clinched a spot in the Chase for the championship for Kenseth, who would be the No. 1 seed at this point based on having the most wins this season.
Kahne tried repeatedly to get by Kenseth, several times trying to slide in front of Kenseth, but Kenseth refused to let Kahne past.
But with 14 laps to go, Kahne actually got by Kenseth for a moment in heavy lapped traffic. Then Kahne slipped a little as he tried to hold onto the top spot, allowing Kenseth to regain the lead.
Kahne refused to give up, but Kenseth rebuffed every attempt to the finish line.
"We have enough speed to hold on," Kenseth said. "It was a great, wild final 12-15 laps. The night race at Bristol is one of the biggest races of the year to win. That is why this win is so special.
"I had to win after putting us in a box by speeding on pit road (during the sixth caution flag on lap 257).
"I got real tight at the end. I really thought he was going to pass me. If he had ever cleared me, it would have been over. One time he almost cleared me, so I had to really drive hard into Turn 3. And that is why we got together in four. That was really close."
Kahne thought he had "the better car. I just couldn't clear him. It's very disappointing as I thought we had the best car.
"I tried a slide job several times. Just couldn't clear him. I needed a win, but I needed to finish, too."
The runner-up finish vaulted Kahne into eighth place in the Chase standings.
Kahne had a chance to take out Kenseth in their duel but admitted "at the end of the day, I don't wreck people."
Asked if he would have taken out Kahne if things had been reversed, Kenseth said, "No. I raced him exactly the same as I race everyone. We both raced hard. We both wanted to win."
Juan Pablo Montoya finished third, followed by Brian Vickers, Joey Logano, Paul Menard, Jeff Gordon, Marcos Ambrose, Greg Biffle and Dale Earnhardt Jr.
For Logano, it was a great comeback after running into Kyle Busch on lap 107 after Busch slowed in heavy traffic. Logano damaged the front end of his car in the accident.
Clint Bowyer, running in the top five, ran out of gas with just over a lap to go and finished 14th.
It was also a remarkable comeback for Bowyer, who while running out front was clipped by Travis Kvapil. The contact sent Bowyer spinning when he was slammed into by Bobby Labonte.
With his top-15 finish, Bowyer clinched a spot in the Chase and pulled to within 18 points of leader Jimmie Johnson, who was involved in the eighth of the 11 caution flags. Johnson ended the race in 36th place.
Brian Keselowski, the defending Sprint Cup champion, Martin Truex, Jr., Ryan Newman and Kurt Busch all had their Chase hopes severely dashed.
Keselowski, Truex and Newman were involved in a multi-car accident on lap 448. The wreck was triggered when Vickers cut down on Denny Hamlin. The contact turned Hamlin into Newman, who was able to continue and limped home in 21st place. Keselowski ended up 30th and Truex finished 35th.
Kevin Harvick thought Hamlin started the wreck, so he stopped at the end of Hamlin's pit stall, climbed out of his car and walked to Hamlin's car.
"Just wanted to know what happened," Harvick said. "He said he was hit from behind."
After a short red flag, Jeff Gordon and Earnhardt, running second and third respectively, elected to pit for fuel. Neither one wanted to gamble on running out of gas and severely damaging his Chase aspirations.
Kurt Busch’s hopes of making the Chase took a real hit after he finished 31st. Unlike Truex, who has a win, neither Busch nor Keselowski has won a race this year.
After starting second, Busch led 54 of the first 76 laps before he suddenly slowed with tire problems. He was forced to make an unscheduled pit stop and lost three laps.