Carolina Panthers
The Carolina Panthers selected McCaffrey in the first round with the eighth overall pick in the 2017 NFL draft. He was the second running back taken, after fourth overall pick Leonard Fournette.
On May 4, 2017, the Carolina Panthers signed McCaffrey to a four-year, $17.2 million contract with a signing bonus of $10.7 million.
McCaffrey made his NFL season debut in the Panthers' season-opener against the San Francisco 49ers and recorded 47 rushing yards, 38 receiving yards, and a lost fumble in a 23–3 victory. In Week 3, against the New Orleans Saints, he had nine receptions for 101 yards. In Week 5 against the Detroit Lions, McCaffrey scored his first career touchdown on a six-yard shovel pass from quarterback Cam Newton. In Week 9, against the Atlanta Falcons, he scored his first career rushing touchdown on a four-yard rush in the second quarter. In the team's Monday Night Football win over the Miami Dolphins, McCaffrey scored twice–one rushing and one receiving–and totaled 50 yards. In Week 15, in a victory over the Green Bay Packers, McCaffrey brought his season total to 73 catches and five receiving touchdowns, being the only rookie running back in NFL history with at least 70 receptions and five touchdown catches before being joined by Alvin Kamara later in the season. The following week, against the Tampa Bay Buccaneers, McCaffrey brought his catch total to 75, breaking the Panthers rookie record of 74 set by Kelvin Benjamin. He finished his rookie season with 435 rushing yards, two rushing touchdowns, 80 receptions, 651 receiving yards, and five receiving touchdowns. The Panthers made the playoffs as the #5-seed. In the Wild Card Round against the New Orleans Saints, he had 16 rushing yards, six receptions, 101 receiving yards, and one receiving touchdown in the 31–26 loss.
In Week 2, against the Falcons, McCaffrey had 14 receptions for 102 receiving yards to go along with 37 rushing yards in the 31–24 loss. In Week 3, against the Cincinnati Bengals, he had 28 carries for a career-high 184 rushing yards in the 31–21 victory. Though limited in yardage for much of the middle of the season, from Weeks 8–10 McCaffrey compiled seven touchdowns in three games (joining DeAngelo Williams in 2008 as the only other Panther with this distinction), including all of Carolina's scores in a 52–21 loss to the Pittsburgh Steelers. On November 25, 2018, McCaffrey became the first Panther ever to have over 100 yards rushing and receiving in the same game. He had 125 yards rushing and 112 yards receiving in a loss to the Seattle Seahawks. The 237 yards set a Panthers franchise record for most yards from scrimmage in a game. He also was the first player since Arian Foster in 2011 to have 100+ yards and a touchdown both rushing and receiving, and the only player with 10+ receptions in such a game. During Week 15, in a Monday Night Football showdown against the 11–2 Saints, McCaffrey threw a 50-yard touchdown pass on 4th and 2 to Chris Manhertz. With 50 rushing, 50 receiving and 50 passing yards, he joined Walter Payton and Gale Sayers as the only others to achieve this. During Week 16 against the Atlanta Falcons, McCaffrey broke Matt Forte's record for most receptions by a running back in a single season, finishing with 101 rushing yards and 77 receiving yards as the Panthers lost 10–24. Since the Panthers were eliminated from the playoffs, he had a limited role in the Week 17 victory over the New Orleans Saints with 40 total yards. Overall, he finished the 2018 season with 1,098 rushing yards, seven rushing touchdowns, 107 receptions, 867 receiving yards, and six receiving touchdowns. McCaffrey had the opposite of a sophomore slump, as he became the Panthers franchise record holder of all-purpose yards in a season with 1,965. McCaffrey also broke the NFL record for the highest catch percentage in a single season by a player with at least 100 receptions, catching 86.3% of his targets; the former record holder was Larry Centers, who caught 84.9% of his passes while playing for the 1995 Arizona Cardinals. Michael Thomas also broke Centers' record in 2018, catching 85.0% of his targets while playing for the New Orleans Saints. McCaffrey was ranked 42nd by his fellow players on the NFL Top 100 Players of 2019.
In Week 1 against the Los Angeles Rams, McCaffrey rushed 19 times for 128 yards and two touchdowns and caught 10 passes for 81 yards as the Panthers lost 27–30. He played every offensive snap and became the first player to post 10 or more receptions and 120 or more rushing yards in two career games. After losing All-Pro quarterback Cam Newton in Week 2, the Panthers beat the Arizona Cardinals 38–20 in Week 3, where McCaffrey rushed 24 times for 153 yards with a career long 76-yard touchdown and caught three passes for 35 yards. In Week 4 against the Houston Texans, McCaffrey rushed 27 times for 93 yards and one touchdown and caught 10 passes for 86 yards in the 16–10 win. In the game, McCaffrey generated 179 yards of offense while the rest of his team only generated 118 yards of offense. During Week 5 against the Jacksonville Jaguars, McCaffrey bested his career long rushing touchdown set in Week 3 with an 84-yard touchdown run. This also set a Panthers record for longest touchdown run. He finished with 176 rushing yards and 2 rushing touchdowns along with 61 receiving yards and 1 receiving touchdown, bringing it to 237 total yards as the Panthers won 34–27. In Week 6 against the Buccaneers, McCaffrey rushed 22 times for 31 yards and one touchdown and caught four passes for 26 yards and one touchdown in the 37–26 win.
During Week 9 against the Tennessee Titans, McCaffrey finished with 146 rushing yards, 20 receiving yards, and 3 total touchdowns as the Panthers won 30–20. That performance helped him maintain the league lead in rushing yards and rushing touchdowns over the Minnesota Vikings' Dalvin Cook he held from Week 6 to the midpoint of the season (through 8 games). McCaffrey continued his touchdown streak in Week 10 against the Packers on the road, carrying the ball 20 times for 108 yards on the ground and one score, while hauling in six catches for 33 yards. He also fumbled for the first time this season, and was stopped just short of the goal line in a failed comeback late in the fourth quarter in the 16–24 loss. During a Week 11 29–3 loss to the Falcons, McCaffrey finished with 121 receiving yards and 70 rushing yards; his 191 yards from scrimmage was again more than the rest of team's combined 156. He recorded his 53rd reception, breaking LaDainian Tomlinson's record for the most catches by a running back in an NFL player's first three seasons. In Week 12, against the Saints, he totaled 133 scrimmage yards (64 rushing, 69 receiving), a rushing touchdown, and a receiving touchdown. In Week 15 against the Seahawks, McCaffrey rushed 19 times for 87 yards and two touchdowns and caught eight passes for 88 yards during the 30–24 loss. In Week 16 against the Indianapolis Colts, McCaffrey rushed 13 times for 54 yards and caught 15 passes for 119 yards during the 38–6 loss. In Week 17 against the New Orleans Saints, McCaffrey rushed nine times for 26 yards and a touchdown and caught seven passes for 72 yards in the 42–10 loss. During the game, McCaffrey joined Roger Craig and Marshall Faulk as the only players to have 1,000 yards rushing and receiving in the same season.
McCaffrey finished the 2019 season with 1,387 rushing yards and 15 rushing touchdowns to go along with 116 receptions for 1,005 receiving yards and four receiving touchdowns. This performance led to McCaffrey being selected for his first Pro Bowl, played on January 26, 2020. He earned First-team All-Pro honors. McCaffrey finished third in Offensive Player of the Year voting. He accounted for 43% of his team's offensive yards during the season, the largest percentage of any individual player in the NFL. He was ranked sixth by his fellow players on the NFL Top 100 Players of 2020.
On April 16, 2020, McCaffrey signed a four-year, $64 million contract extension with the Panthers through the 2025 season, making him the highest-paid running back in NFL history.
In Week 1, McCaffrey carried the ball 23 times for 96 yards and two rushing touchdowns and caught three of four targets for 38 receiving yards in a 34–30 home loss to the Las Vegas Raiders. In Week 2 against the Buccaneers, he totaled 88 scrimmage yards and two rushing touchdowns in the 31–17 loss. When McCaffrey rushed for his second touchdown early in the fourth quarter, he suffered a high ankle sprain and missed the rest of the game. He was placed on injured reserve on September 23. He was activated on November 7 prior to Week 9. In Week 9 against the Kansas City Chiefs, McCaffrey recorded 69 rushing yards and a rushing touchdown and 82 receiving yards and a receiving touchdown during the 33–31 loss. During the game, McCaffrey suffered a shoulder injury and was later ruled out of the Panthers' following game and later the remainder of the season. He was ranked 44th by his fellow players on the NFL Top 100 Players of 2021.
McCaffrey started the 2021 season with 177 scrimmage yards in Week 1 against the New York Jets and 137 scrimmage yards in Week 2 against the Saints. In Week 3, McCaffrey suffered a hamstring injury that kept him out the next two games. Despite returning to practice prior to Week 6, he was placed on injured reserve on October 16. He was activated on November 6 for Week 9. He went over 100 scrimmage yards in the following three games. On November 29, the Panthers announced that McCaffrey would miss the remainder of the season with an ankle injury he suffered during the Panthers Week 12 loss to the Dolphins. He finished the 2021 season with 442 rushing yards, 343 receiving yards, and two total touchdowns in seven games.
In the season opener against the Cleveland Browns, McCaffrey had 14 carries for 57 yards and one touchdown in a 24–26 defeat. Through the first six games with the Panthers, McCaffrey had 393 rushing yards, 277 receiving yards, three total touchdowns, and 670 scrimmage yards.