North Dakota State (2-1, 1-1 Missouri Valley), which has won three straight FCS championships, had last lost on Nov. 4, 2017, to then-No. 8 South Dakota State.
"We didn't show up and play very well,'' Bison coach Matt Entz said. "There was not any position group that played well.''
It was the Bison's worst defeat since a 37-6 loss at Cal Poly during the 2005 season.
Williams ran for a 3-yard score, and Elliott broke loose for a 20-yard touchdown run in the fourth quarter. Both scores followed a North Dakota State turnover. Elliott finished with 91 yards rushing and Williams had 41, and the pair also had touchdown runs in the second quarter.
The Salukis (2-1, 1-1) snapped an eight-game losing streak to the Bison, who were 16.5-point favorites.
"This game will be recognized for a long time, maybe the biggest win in that stadium,'' Southern Illinois coach Nick Hill said of ending North Dakota State's FCS-record winning streak.
Avante Cox had seven receptions for 138 yards for Southern Illinois. His 65-yard catch set up Williams' 1-yard touchdown run on fourth down to give the Salukis a 17-0 lead with about a minute left in the second quarter.
Salukis quarterback Nic Baker, filling in for senior Kare Lyles -- who left with a rib injury during last week's game against North Dakota -- had a TD pass and was 17-of-23 passing for 254 yards. His 6-yard touchdown pass to Landon Lenoir stretched the Salukis' lead to 24-7 early in the fourth quarter.
"It's what I hope for, it's what I've dreamed of,'' Baker said. "I kind of want those moments."
Zeb Noland threw a 37-yard Hail Mary touchdown pass that was tipped to Jake Lippe that pulled the Bison to 17-7 at the break. Jalen Bussey's 63-yard run set up Noland's 5-yard touchdown run with 2:16 left.
It was Southern Illinois' first win against the Bison since a 24-14 home victory on Sept. 26, 2009.