Offensive lineman Alan Knott was waived to make room for Morris, who will serve as added depth with fellow running backs Jerick McKinnon (calf strain) and Matt Breida (shoulder) nursing injuries.
Morris played for coach Kyle Shanahan in Washington during his first two NFL seasons and ran 611 times for 2,888 yards and 20 touchdowns.
"Alf did a great job for us the two years I was with him," Shanahan said of the 29-year-old Morris on Monday. "It's not flashy, but he runs extremely hard. He's very reliable. He's a hard-nosed runner who you can keep handing the ball off to. He's very reliable."
Morris, who is listed at 5-foot-10 and 222 pounds, played for the Dallas Cowboys the past two seasons. In 2017, he rushed 115 times for 547 yards and a touchdown while playing in 14 games.
Knott, who is listed at 6-4 and 290 pounds, originally signed with the 49ers as an undrafted rookie free agent out of South Carolina on April 30.