Bell, who was released by the New York Jets earlier this week, agreed to a one-year deal, a source told ESPN's Adam Schefter.
Bell took to Twitter to express his excitement at the news.
The Chiefs, who also took to Twitter to welcome Bell to Kansas City, play the Jets in Week 8.
Bell will have to go through five days of COVID-19 testing before he can join the Chiefs, per NFL protocols, so he won't be available to play on Monday, when the Chiefs are scheduled to visit the Buffalo Bills.
Bell had narrowed his choices to the Chiefs, Miami Dolphins and Bills, ESPN's Jeremy Fowler reported earlier Thursday.
The 4-1 Chiefs are 13th in the league in rushing at 119 yards per game and 10th at 4.5 yards per carry. But most of their best work in the running game came in Week 1, when rookie Clyde Edwards-Helaire rushed for 138 yards and a touchdown in a victory over the Houston Texans.
Since then, the Chiefs are 19th in the league in rushing (108 yards per game) and don't have a rushing touchdown from a running back.
The Chiefs lost starting running back Damien Williams before the start of the season when he opted out for COVID-19 reasons. They also have Darrel Williams, Darwin Thompson and DeAndre Washington at running back.
The Jets released Bell on Tuesday, ending a 19-month tenure that was filled with disappointment. Bell, who arrived as a marquee free agent in 2019, never clicked with coach Adam Gase, who opposed the signing from the outset.
Frustrated by his lack of involvement in the offense, Bell met with Gase and general manager Joe Douglas on Monday, a source told ESPN's Rich Cimini. They told Bell they would explore a trade and gave his agent permission to speak with other teams.
Bell, a three-time Pro Bowl selection, was a disappointment since signing a four-year, $52.5 million contract last year with the Jets, averaging only 3.3 yards per carry -- 51st out of 53 qualifying runners in the NFL during that span.
In 17 games with the Jets, Bell rushed for 863 yards and three touchdowns. He was hurt by mediocre line play and a system that didn't cater to his strengths as a versatile player.
The Jets are responsible for the remaining $6 million on Bell's 2020 base pay, but there is an offset clause that will defray it by the amount of the salary on a new contract with the Chiefs.
Bell, 28, joined the Jets after sitting out the entire 2018 season after receiving the franchise tag from the Pittsburgh Steelers for a second straight year. After gaining nearly 2,000 total yards during the 2017 season, Bell opted to eschew the $14.5 million franchise tag in 2018 -- forgoing about $855,000 per game -- so he could preserve his long-term viability for a big contract in free agency.
After the 2017 season, Bell showed his conviction by turning down a five-year, $70 million offer from the Steelers because of what he called a low true guarantee of $17 million, and he was able to miss games because he was unsigned and thus not bound to the team.
In five seasons with the Steelers, Bell rushed for 5,336 yards and 35 touchdowns. He also had 312 receptions for 2,660 yards and seven scores.