MINNEAPOLIS (AP) -- Cleveland hasn't given up on the season. Minnesota's is already slipping away.
Jordan Cameron caught three touchdown passes, including the go-ahead grab in the back of the end zone with 51 seconds left, and the Browns kept the Vikings winless with a 31-27 victory Sunday.
Third-stringer Brian Hoyer threw for three scores for the Browns (1-2), the latest team to torch Minnesota's depleted secondary. He overcame three interceptions to throw for 321 yards, going 30 for 54. Josh Gordon had 10 catches for 146 yards and a touchdown in his season debut, and Cameron had six receptions for 66 yards.
Christian Ponder ran for two touchdowns for the Vikings (0-3), but he threw an interception, lost a fumble and took his sixth sack on the final play of the game.
After trading young star running back Trent Richardson and elevating Hoyer for his second career start, the Browns looked finished. But they held Adrian Peterson to 88 yards and one score on 25 rushes, used a fake punt and a fake field goal in the first half to build their lead and stun a Vikings club coming off a 10-6 season.
The Vikings got Blair Walsh's second field goal of the game with 10:47 remaining, but they punted twice after that and missed all kinds of chances to put the game away.
The Browns started at their 45 with 3:21 left and finished the commanding march with a 7-yard pass in the corner to tight end Cameron. Ponder almost hit Jerome Simpson in a crowd at the goal line on the penultimate play.
The bigger problem for Minnesota was the defense against a Browns team that totaled 16 points and one touchdown over the first two games. Top cornerback Chris Cook injured a groin muscle in the first quarter and didn't return.
Peterson powered in for a 2-yard score and the Vikings were quickly in front. The Browns punted after 45 seconds on their opening possession.
But a funny thing happened to the Vikings on their way to the blowout this was set up to be. Hoyer found Gordon uncovered along the sideline after he faked out A.J. Jefferson for a 47-yard touchdown. After an ugly three-and-out by the Vikings, the fans were already booing, and they grew even more disgruntled when Gordon gained 30 yards on Cleveland's next play.
Cameron made a tough catch at the edge of the end zone to put the Browns up 14-7.
Ponder scored on a draw play to tie the game, but the Browns used a fake punt -- safety Josh Aubrey ran with the snap for 34 yards, and set up a field goal by Billy Cundiff. Ponder's next pass was tipped and picked off by T.J. Ward.
The Vikings thought they forced another kick, but holder Spencer Lanning spun around and found Cameron open along the sideline for an 11-yard touchdown in a bizarre second quarter.
Travis Benjamin dropped a punt the Vikings recovered at the 26, but coach Leslie Frazier was flagged 15 yards for challenging a play only reviewable by booth officials. Walsh's field goal sliced the lead to seven.
Hoyer's first interception led to Ponder's fumble at the Cleveland 10 as he was sacked on the final play of the half. The second pick by the Vikings came in the third quarter, but Peterson fumbled the ball back two plays later.
Finally, after Sharrif Floyd tipped Hoyer's pass from the end zone and Erin Henderson grabbed the pop-up, the Vikings converted a turnover into a TD. Ponder scrambled for 8 yards and crossed the goal line in a jarring collision.