JACKSONVILLE, Fla. — Trent Edwards was good early and even better late, doing just enough to lead the Buffalo Bills to their best start in five years.

Edwards completed his first 10 attempts and threw a perfect touchdown pass to James Hardy late in the fourth quarter, as the Bills beat the beleaguered Jacksonville Jaguars 20-16 Sunday.

Edwards finished 20-of-25 passing for 239 yards, Marshawn Lynch ran for 59 yards and a score, and Buffalo's defense held Jacksonville in check most of the day. The Jaguars (0-2) are off to their worst start since 2003. They finished 5-11 that season — and could be in for another long one this time around.

Buffalo (2-0) had just four offensive plays in the third quarter — a commanding 15 minutes for the Jags that gave them the lead and nearly the game.

Jacksonville took the second-half kickoff and drove 74 yards for a touchdown that tied the score at 10. Maurice Jones-Drew plunged in from 2 yards out, then the Jaguars recovered an onside kick that led to a field goal and their first lead in two games this season.

Edwards fumbled on the ensuing possession, giving the Jaguars good field position, and they tacked on a field goal that made it 16-10 early in the fourth.

Jacksonville looked as though it would hold on from there, especially since the defense had buckled down after a shaky start.

But Edwards made two of his best throws when his team needed them most. Facing third-and-6 from the Jacksonville 44, Edwards hung in the pocket and threw a strike to Lee Evans that gained 37 yards. Edwards was even better on the next play, hooking up with second-round draft pick Hardy in the corner of the end zone for a 7-yard score.

It was Hardy's first career touchdown reception. Jaguars coach Jack Del Rio challenged the catch, but replays showed Hardy got both feet down.

Jacksonville was forced to punt on the ensuing possession, and Roscoe Parrish's 27-yard return set up Rian Lindell's 45-yard field goal with 29 seconds to play.

David Garrard was 17-of-28 for 170 yards for Jacksonville. Fred Taylor ran 14 times for 49 yards, and Jones-Drew added 17 on the ground. It was a second straight offensive struggle for a team playing without three starting offensive linemen.

Three-time Pro Bowl defensive tackle Marcus Stroud was disruptive for the second consecutive week, penetrating the line of scrimmage, pressuring Garrard and commanding double teams.

This one had to be sweeter than last week's debut with the Bills. It came against his former team and where he spent the first seven years of his career.

Stroud downplayed his return all week. But when pregame introductions rolled around, Stroud was standing on the field jawing with close friend and former teammate John Henderson. He did even more talking when the game started, then backed it up.

Stroud manhandled Jacksonville's interior line, which was pieced together with three backups after the team lost starting guards Vince Manuwai and Maurice Williams for the season. Center Brad Meester (biceps) will be sidelined at least another week.

The Jaguars double-teamed Stroud early and often, but he still made plays. One of his best came when he split two linemen and tipped Garrard's pass to the end zone. Instead of a possible game-tying TD toss to Mike Walker in the closing seconds of the first half, the pass was intercepted by Terrence McGee.

With Stroud manning the middle, the Bills held the Jaguars to 246 total yards. Most of that came in the third quarter.

Buffalo was much better on offense, especially early and late.

The Bills, maybe getting a boost from the return of Pro Bowl left tackle Jason Peters, opened the game with an impressive 82-yard touchdown drive. Edwards completed all six of his passes for 53 yards, and Lynch bulled his way into the end zone for an 11-yard score.

Peters missed all of the offseason in a contract dispute. He ended his holdout last week and solidified the line against the Jaguars — at least for the first half.