DENVER -- Playing in a final preseason game for the first time since 2009, running back Chris Johnson ran 11 times for 45 yards as the Arizona Cardinals beat the Denver Broncos 22-20 Thursday night.

In his first action of the summer after recovering from a hamstring injury, Johnson started slowly, but reeled off a 16-yard run on third-and-11. That sparked a 15-play, 80-yard drive that ended with Paul Lasike's 4-yard TD catch from rookie Phillip Sims.

Brandon McManus missed a 51-yard field goal in the final minute as the Broncos (3-1) failed to complete a perfect preseason.

More from FoxSports

Chandler Catanzaro missed two PATs, the second coming after Logan Thomas' 59-yard TD toss to J.J. Nelson that put Arizona (2-2) ahead 22-20 early in the fourth quarter.

Those misses loomed large until McManus pushed his field goal try wide with 49 seconds remaining.