The 2018 season was filled with surprises, both good and bad. Last week we looked at the biggest fantasy football surprise for each of the 16 AFC teams. This week we turn our attention to what the biggest surprises were inside the NFC and offer some insight on what to expect from these players in the year ahead.

David Johnson failed to reach 1,000 yards rushing despite playing 16 games

Johnson wasn’t a bust in 2018 as he still managed to finish inside the top 10 at running back, but he was far from elite. He only eclipsed 100 total yards in five contests had registered 0.81 fantasy points per touch. There will be a whole new staff in Arizona in 2019 and the 27-year-old will be looking for a bounce back.

Calvin Ridley caught 10 touchdowns

Ridley proved to be a boom-or-bust fantasy producer as a rookie. He scored six touchdowns during his first four games, inflating his value early in the year. He would only go on and score four more times over his next 12 contests while averaging 4.1 receptions and 46.4 yards per game.

Christian McCaffrey finished with 317 total touches

Panthers’ head coach Ron Rivera hinted as a larger workload for McCaffrey before the season, and that is exactly what happened in Carolina. He played 100% of the team’s offensive snaps in eight of 16 games and 91.3% for the season. He’ll be locked in as a top-three overall pick heading into 2019.

Not a single player reached 800 yards receiving

Matt Nagy’s impact on the Bears’ offense during his first season as the head coach was immeasurable but didn’t translate into huge fantasy success. It was often difficult to predict where the production was going to come from. Look no further than the fact Allen Robinson led the team with 754 receiving yards to illustrate the point.

Team traded first-round pick midseason for Amari Cooper

The Cowboys took some heat from when they made the move for Cooper, but it paid off and soon the critics were silenced. In Weeks 9-17, Cooper was WR8 in fantasy catching 53 of his 72 targets for 725 yards and six touchdowns. Look for Dallas to try and lock up the 24-year-old wideout long term this offseason.

Matthew Stafford ended the year as QB20 in fantasy points

Stafford turned in one of his worst seasons as a pro in 2018, the first year of the Matt Patricia era in Detroit. The veteran finished as QB20 on the season with 3,777 passing yards, 21 touchdowns and 11 interceptions. His lackluster 75.4 adjusted complete percentage and lowly 7.09 average depth of target were concerning.

Despite starting 16 games, Aaron Rodgers wasn’t a top-six fantasy QB

If there ever was a poster child for the “never draft a QB early” crowd, it was the 2018 version of Rodgers. His third-round ADP this past season seems laughable now given his production. Rodgers had his worst touchdown percentage (4.2) and second-worst completion percentage (62.3) of his career. The in-season firing of Mike McCarthy was an indication of just how bad things got.

Waiver-wire grab C.J. Anderson played a role down the stretch

With Todd Gurley dinged up late in the year, the Rams plucked Anderson off the waiver wire and he delivered. After being cut by Carolina, Anderson was briefly with the Raiders before finishing the year in Los Angeles. He tallied 299 yards and two scores on 43 carries in the final two weeks of the regular season and has been a factor in the team’s postseason run.

Adam Thielen only averaged 56 receiving yards per game during second half

Thielen got out of the gate with eight straight 100-yard games to start the season, but he only hit the mark once over the final eight contests of 2018. He failed to eclipse five catches in any of his final five games of the year. Prior to that rough stretch he had accomplished that feat in nine of his previous 11 outings.

Mark Ingram never became a factor after returning from a suspension

Ingram was suspended for the first four games of the season and was never able to find his fantasy groove upon returning to the lineup. He had back-to-back 100-yard games in Weeks 10 and 11 with three touchdowns in those games. However, in his remaining 10 contests he only scored four more times and hit 60 yards on the ground twice.

Saquon Barkley was even better than expected

When a player is hyped as much as Barkley was coming into the league it doesn’t always pan out. That was not the case with Giants’ rookie. He finished as the top scoring running back in PPR leagues in 2018 and became just third rookie in NFL history to register 2,000 or more total yards from scrimmage. Barkley also set a new rookie record for a running back with 91 receptions.

Nick Foles once again led a late-season charge

Foles came to the rescue for the Eagles when Carson Wentz went down again. Owners who rolled him out in Week 16 were rewarded when he threw for 471 yards and four touchdowns against the Texans. The veteran added another win in Week 17 and then led a playoff upset over the Bears before falling to the Saints. Foles will be one of the more coveted quarterbacks on the market this offseason.

George Kittle established new receiving mark for tight ends

Kittle finished with a record 1,377 receiving yards and five touchdowns on 88 catches. His 15.65 yards per reception and 9.92 yards after contact per reception were eye-popping. Considering he did all of this with Jimmy Garoppolo out most of the year was even more impressive. Kittle is a sure-fire top-three TE entering next year and will likely go off the board within the first 40 picks come draft day.

Chris Carson carried the lead role in backfield all season long

Carson took the lead job in the Seattle backfield during training camp and never gave it back. He held off first-round pick Rashaad Penny and journeyman Mike Davis to remain the top gun in the Seahawks’ run-heavy attack all year. He netted 4.7 yards per carry and finished with 1,151 yards and nine touchdowns rushing while catching 20 passes for 163 yards.

Ronald Jones was biggest bust among rookies

No rookie running back proved to me more disappointing than Jones in Tampa in 2018. The former USC Trojan was utilized mostly as a special teams player even when active down the stretch. He finished the year with 23 carries for 44 yards and a touchdown and seven catches for 33 yards in nine games. His roster spot is far from a given with a new regime in the fold moving into 2019.

Adrian Peterson offered RB2 production most of the season

The Redskins turned to Peterson after rookie Derrius Guice suffered a season-ending injury this summer and the 33-year-old responded by starting 16 games for the first time since 2015. The future Hall of Famer finished the year with 1,042 yards on 251 attempts and caught 20 of his 26 targets for 208 yards. Peterson will likely return to the field in 2019, but it remains to be seen if the Redskins will be a suitor for services.