MINNEAPOLIS -- The quiet in the locker room after the game was almost a respite for the Minnesota Vikings. They'd spent three hours being booed lustily during a sloppy home loss to a team in full-on rebuilding mode.

Sitting at 0-3 with a trip to London coming up, the Vikings' season is teetering on the brink of ruin, and they know it.

Jordan Cameron caught three touchdown passes, including the go-ahead grab in the back of the end zone with 51 seconds left, and the Cleveland Browns overcame a week of turmoil to stun the Vikings 31-27 Sunday.

"We have to fix it," said quarterback Christian Ponder, who heard chants for backup Matt Cassel throughout another uneven performance. "Otherwise we're going to be 0-16."

Ponder rushed for two touchdowns, but he also was 25 of 42 for 228 yards with one interception and one lost fumble. He didn't get much help from an offensive line that has woefully underperformed through three games. The unit allowed six sacks and had a hard time opening holes for Adrian Peterson against Cleveland's determined front seven.

Peterson rushed for 88 yards and a touchdown, averaged just 3.5 yards per carry and lost a fumble. The offense managed to turn four Browns turnovers into only 10 points and the defense couldn't hold a late lead for the second straight week.

The Browns trailed 27-24 and started at their 45 with 3:21 left. But Brian Hoyer capped a commanding march down the field with a 7-yard pass in the corner to Cameron to win the game.

"We've got to play better defense," said DE Jared Allen, who was shut down by Browns star left tackle Joe Thomas all afternoon. "I don't know if guys underestimated the Browns coming in or what the deal was, but we have to take a long look in the mirror and get better."

The Vikings could live with starting 0-2 with road losses to NFC North foes Chicago and Detroit. But to lose at home to a team that just traded its starting running back and elevated third-string quarterback Hoyer to the starting job in place of Brandon Weeden? That one really stings.

Hoyer completed 30 of 54 passes for 321 yards with three touchdowns in his second career start. He also threw three interceptions, but Ponder and the Vikings couldn't make him pay for it. The chants for Cassel could be heard loud and clear in the second half.

Josh Gordon made a triumphant return from a two-game suspension with 10 catches for 146 yards and a 47-yard touchdown in the first quarter that tied the game at 7. That let the Vikings know the Browns had no intention of folding after a tumultuous week.

Far from tanking, the Browns threw everything they had at the Vikings. They executed a fake punt and a fake field goal that resulted in an 11-yard touchdown pass from holder and punter Spencer Lanning to Cameron that gave Cleveland a 24-14 lead in the second quarter.

The Vikings are sure to hear plenty of negativity as they get ready to cross the pond to play the Steelers in London next week. There were mental errors in all three phases, the defense continues to be leaky, and Ponder hasn't shown signs of being the long-term answer at quarterback.

Coach Leslie Frazier said Ponder remains his starter, and the coach made a mistake himself, challenging a muffed punt by Cleveland in the second quarter. But NFL rules prohibit coaches from challenging changes of possession, and referee Bill Leavy doubled down on the errors by mistakenly penalizing the Vikings 15 yards for unsportsmanlike conduct. The Vikings should have just been docked a timeout.

"To come up short and make some of the mistakes that we made, we've got a lot of work to do if we want to get it turned around," Frazier said. "We don't want to be losing home games. It's just not a good thing."

Copyright 2013 The Associated Press. All rights reserved. This material may not be published, broadcast, rewritten or redistributed.

More From KSOO-AM / ESPN Sioux Falls