Portland State (3-5, 2-2 Big Sky) took the lead for good with a 41-yard field goal from Jonathan Gonzales in the second quarter, and put the game away with McDonagh's touchdown run from the 8 with 2:25 left.
McDonagh finished 14 of 23 for 172, finding Darnell Adams for a 24-yard touchdown and Kasey Closs for a 22-yarder. Steven Long had 118 yards on 21 carries for the Vikings, who won their first road game since Nov. 9, 2013.
Billy Green was 14 of 24 for 196 yards, a touchdown and an interception for Weber State (0-8, 0-4). Shaydon Kehano also threw a touchdown and Darryl Denby had 100 yards on five catches, including a 36-yard touchdown.