It all added up to the first road win for the Browns (4-8) since beating Indianapolis 27-19 in the second game of the 2011 season.
The skid started a few weeks later with a loss in Oakland and went deep into this season.
The Raiders have lost five straight for the first time since a six-game losing streak in Lane Kiffin's first year as coach in 2006, much to the dismay of the small crowd that repeatedly booed the home team's mistakes.
The biggest came when rookie Juron Criner used a double move to get behind Brown and Carson Palmer underthrew the deep ball with Oakland already in position for a game-tying field goal. Brown intercepted the pass at the 6-yard line and Weeden engineered an impressive drive beginning with 9:31 to play.
Weeden completed an 11-yard pass on third-and-3 to Gordon to get the Browns started and also had a big 22-yard pass to tight end Benjamin Watson. Weeden then converted a fourth-and-1 sneak from the Oakland 45 and Desmond Bryant jumped offside on a third-and-1 from the Raiders 10.
Richardson scored two plays later to give the Browns a 20-10 lead with 3:27 to go as the Browns won for the fourth time in seven games since an 0-5 start to match last season's win total.
The improvement since the early struggles may help second-year coach Pat Shurmur convince new owner Jimmy Haslam that he deserves to keep his job.
The Browns have been improved defensively of late and Weeden had one of his best games as a pro. He completed 25 of 36 passes and overcame two first-half interceptions to lead the impressive late drive.
Richardson ran for 72 yards and Gordon had six catches for 116 yards as Cleveland got big days from its three rookie starters at the offensive skill positions.
The Raiders didn't get nearly enough big plays. Palmer was 34 for 54 for 351 yards, including a 64-yard touchdown to rookie Rod Streater. He added a 17-yard TD pass to Brandon Myers with 1 second left but it was too late. Myers caught 14 passes for 130 yards.
Oakland showed signs of life late in the third quarter when Desmond Bryant blocked a 28-yard field goal attempt by Phil Dawson. That was Dawson's first miss in more than a year after 29 consecutive makes.
Four plays later, Streater made a good adjustment on a deep pass from Palmer that cut Cleveland's lead to 13-10. But that's as close as the Raiders got.
After getting outscored by 90 points during what general manager Reggie McKenzie recently described as a "terrible November," the Raiders didn't get off to a much better start in December.
They punted on their first four possessions of the game and fell behind 10-0 as Dawson kicked a 41-yard field goal early in the second quarter and Gordon beat Ron Bartell deep on a 44-yard touchdown pass later in the second.
Sebastian Janikowski got Oakland on the board with a 51-yard field goal, but was wide right on a 61-yarder at the end of the half.