Los Angeles (AFP) - Josh Allen threw for 329 yards and three touchdowns as the Buffalo Bills defeated Patrick Mahomes and the Kansas City Chiefs 24-20 in another thrilling duel between the NFL rivals on Sunday.
Bills quarterback Allen fired a touchdown pass to tight end Dawson Knox with just 64 seconds remaining to put the Bills into the lead at Arrowhead Stadium.
Bills cornerback Taron Johnson then picked off Mahomes for the Chiefs quarterback's second interception as Buffalo's defensive prowess sealed a victory that takes the Bills to 5-1 for the season.
The matchup was a repeat of last season's playoff thriller between the two AFC heavyweights, which saw Kansas City prevail 42-36 in overtime.
Sunday's win didn't touch the free-scoring heights of last season's roller coaster, the first half finishing locked at 10-10 after Chiefs kicker Harrison Butker slotted a monster 62-yard field goal.
Allen then connected with Stefon Diggs for a 17-yard completion for a touchdown to make it 17-10 to Buffalo midway through the third quarter.
The Chiefs rallied to go 20-17 up after a Mecole Hardman touchdown and a 44-yard field goal from Butker before Allen set up the winning score with a 76-yard, 12-play drive.
'We didn't earn it
Elsewhere on Sunday, the Pittsburgh Steelers upset Tom Brady and the Tampa Buccaneers 20-18 at Heinz Field.
Brady was left ruing a failure to complete a two-point conversion late in the fourth quarter after a Leonard Fournette touchdown with just over four minutes remaining.
Brady finished with 243 passing yards and only one touchdown as the Bucs fell to 3-3.The Steelers improved to 2-4 with the win.
It was another chastening loss for the Buccaneers, who have struggled to find find form and offensive consistency in a shaky start to the season.
"We didn't earn it," Brady said."And it's a game of earning it, and playing well, and performing well.
"We're just not doing a good job of that, and I don't think we've done it for six weeks.We've got to look at ourselves in the mirror and figure out why."
Elsewhere, the New York Jets continued their recent run of good form with a 27-10 victory over the Green Bay Packers.
The Jets rushing game proved the difference at Lambeau Field, with Breece Hall and Braxton Berrios running for touchdowns as New York improved to 4-2.
The Packers fell to 3-3 with a loss that saw quarterback Aaron Rodgers relegated to the bench for the closing stages of the fourth quarter to make way for Jordan Love.
'Sub-par' Packers
Rodgers later admitted the Packers had been "sub-par" in back-to-back defeats against the Jets and New York Giants -- but rejected suggestions of a crisis.
"We've gotta be realistic at where we're at, we've played a couple of sub-par games," Rodgers said.
"We've got to play better.But wobbly?Only if people are breaking rank.
"It will be interesting to look at the comments from our guys and coaches, and hopefully we stick together.That's the important thing."
While the Jets' strong start to the season continued, the New York Giants extended their run of impressive results with a 24-20 victory over the Baltimore Ravens at MetLife Stadium in East Rutherford.
The Giants recovered from a 20-10 fourth quarter deficit to seal victory with touchdowns from Daniel Bellinger and Saquon Barkley.
Barkley rushed over from one yard out to put the Giants ahead with 1:43 remaining.
Ravens quarterback Lamar Jackson fumbled after being sacked on the next Baltimore possession to hand victory to the Giants.
Giants coach Brian Daboll paid tribute to his team's doggedness in grinding out victory after trailing in the fourth quarter.The Giants are now 5-1 in the NFC East.
"This league is hard," Daboll said. "But you keep on getting back up.You keep on swinging, keep on competing."
In Los Angeles, the reigning Super Bowl champion Rams bounced back after consecutive losses with a 24-10 win over the Carolina Panthers.
Matthew Stafford threw one touchdown with 253 passing yards in a game that saw Carolina coach Steve Wilks toss receiver Robbie Anderson out of the game after a touchline bust-up.