BUFFALO — It almost happened.

After an awful start, the Cincinnati Bengals flirted with an unlikely road victory at Buffalo on Sunday. But the Bills avoided a brutal loss to pick up a 21-17 victory.

Cincinnati showed some heart with the unlikely rally. But at the end of it, the Bengals are 0-3 for the second time in three years.

After the opening trio of games, it’s clear what Cincinnati will have to overcome to be a postseason contender.

The defense needs better play out of its linebackers, who have looked shaky to start the season. When the pass rush isn’t effective, it tends to lead to big plays. And on the offensive side, the Bengals have to find ways to move the ball consistently.

Pivotal play: A few Bills fans were heading for the exits after the Bengals scored 17 straight points and took a three-point lead with 4:58 left in the game. But the Bills countered with a massive 49-yard pass from Josh Allen to tight end Dawson Knox. And it wasn’t just the completion that was important. Knox ran over a couple of Bengals defenders as he rumbled down to Cincinnati’s 22-yard line and rejuvenated a stunned crowd. By the end of the drive, a Bengals defense that was on the field for 36:54 was visibly gassed as the Bills regained the lead on a 1-yard run by Frank Gore with 1:50 left.

Buy this performance: This might be the game that gets Bengals running back Joe Mixon rolling. After he called himself a peon and shouldered a disproportionate amount of the blame for the Bengals rushing attack, Mixon had his most productive game of the season. He had 61 rushing yards and also tallied 34 receiving yards and a touchdown catch. After Mixon’s 17 yards last week, Bengals coach Zac Taylor said the offense was a block or two away from several runs that were stuffed. Mixon’s performance against the Bills suggests the run game might be productive this season.

QB breakdown: Things were not going well for Andy Dalton through the first two and a half quarters. He missed on 10 of his first 16 passes and threw a bad interception. But Dalton deserves a ton of credit for rallying and leading the Bengals’ comeback. Following the interception in the third quarter, he completed seven straight passes and led the offense on three scoring drives. Dalton came close to pulling out the road victory but threw another bad pass that was intercepted by Buffalo’s Tre’Davious White. Dalton was 20-of-36 passing for 249 yards, one touchdown and two interceptions.