The score culminated an 18-play, 75-yard drive for the Cardinals (2-1, 1-0 MAC) after Buffalo (1-2, 0-1) took the lead.
Wenning completed 24 of 36 passes for 226 yards and two touchdowns. Jahwan Edwards ran for 112 yards and two TDs on 22 carries for Ball State.
Branden Oliver rushed 27 times for 118 yards and a touchdown for the Bulls. Buffalo trailed 21-7 but erased that deficit with the help of quarterback Chazz Anderson, who ran and passed for scores in the fourth quarter.
Anderson's 1-yard run ended a 14-play, 86-yard march that gave the Bulls a 25-21 cushion with 6:28 remaining.