Updated

Concord, NC (SportsNetwork.com) - Having not qualified for this year's Chase for the Sprint Cup championship, Brad Keselowski put an end to his frustrating season by winning Saturday night's Bank of America 500 at Charlotte Motor Speedway.

Keselowski, who claimed his first Sprint Cup Series championship last year, snapped a 37-race winless streak after he rebounded from a pit-road mistake early in the event and then passed Kasey Kahne for the lead in the closing laps. It was Keselowski's 10th career victory in NASCAR's top series but his first since September 2012 at Dover. He won five races during his title season.

During a round of pit stops under caution in the early going, Keselowski left his pit stall with the tire jack still attached to his Penske Racing car. He had to pit again, which dropped him deep in the field. Keselowski patiently made his way through the field before the last caution came for debris with 27 laps to go. His team made a four-tire change during his final stop.

Kahne and Jeff Gordon, his Hendrick Motorsports teammate, came out of the pits first and second, respectively, after taking two tires only on their last stops. Jimmie Johnson held the lead before pitting, but Johnson came out third with four new tires.

Kahne and Johnson dominated throughout the race, with Kahne leading the most laps with 138 and Johnson running in front for 130 laps.

After the final restart with 23 laps to go, Kahne pulled away from the field, while Johnson got shuffled back to seventh. Keselowski chased down Kahne and then grabbed the lead from him with nine laps remaining. Keselowski, who started 23rd, became the first non-Chase driver to win a playoff race since Kahne last did it in November 2011 at Phoenix.

"I never give up," Keselowski said. "We had a lot of struggles tonight. I didn't qualify well (on Thursday). But we kept working our way forward. I knew we had a good car. I'm not sure if we were as good as the 48 (Johnson) or the 5 (Kahne)."

Kahne tried to reclaim the top spot but finished one second behind Keselowski.

"I love hard racing, and there are a handful of guys who you can't race hard with because they freak out, but Kasey is not one of them," Keselowski said. "He's an excellent driver, and he ran me hard but clean. That's great racing."

Kahne's second-place run at Charlotte came after he had finished 12th, 13th, 15th and 37th in the previous four races, which dropped him to last in the Chase point standings.

"We had a really good (car) throughout the whole race from the time it started," Kahne said. "I wish we could have won, but this was a good race for us, considering the last four races."

Matt Kenseth finished third and increased his championship lead from three points to four over Johnson, who ended up placing fourth. Kenseth had been running behind Johnson until Johnson dropped in the field after the last restart.

"Certainly glad we're still leading (in points)," Kenseth said. "Tonight was a big positive for us. It was a little bit of a struggle this weekend more than we anticipated. I didn't get a good lap in qualifying, and that was really the start of us being behind tonight.

"About our second or third adjustment, (crew chief) Jason (Ratcliff) and our group really hit it and really found something that I liked, and our car started driving really good. I could pass really good, start working our way up through the field."

Johnson was attempting to win at Charlotte for a record seventh time. He remains in a tie with Bobby Allison and Darrell Waltrip for most victories at this 1.5-mile racetrack with six each. Johnson has not won here since October 2009.

"There was that last caution, which certainly shook things up," Johnson said. "I lost track position on that restart, which was unfortunate. Once I got rolling and going again, I was fine. But I already had lost too much at that point."

Kyle Busch finished fifth, while Kevin Harvick, who won last weekend's race at Kansas, took the sixth spot. Gordon, Ryan Newman, Denny Hamlin and Carl Edwards completed the top-10.

Harvick is now 29 points behind Kenseth, and Gordon trails by 36 points. Busch is 37 behind. The second-half of the 10-race Chase begins next weekend at Talladega.