Rees got the Fighting Irish (8-3) going with a 61-yard touchdown pass to DaVaris Daniels on Notre Dame's first possession, then set up a 2-yard TD run by Tarean Folston with a 30-yard pass to TJ Jones. Kyle Brindza kicked a 51-yard field goal and a pair of 26-yard field goals for the Irish.
BYU (7-4), which got a 7-yard TD pass from Taysom Hill to JD Falslev in the first quarter, closed to 20-13 when Justin Sorensen kicked a 27-yard field goal with 39 seconds left in the third quarter, but couldn't get any closer.
Hill passed for 168 yards and he and Paul Lasike each rushed for 101 yards for BYU.
BYU had a chance to make a game of it with less than five minutes remaining when Lasike broke off a 46-yard run, running over Notre Dame safety Matthias Farley, before being tackled by KeiVarae Russell at the 6. But the Cougars could only gain 2 yards on the next three plays. A 22-yard field goal attempt by Sorensen was deflected by nose guard Jarron Jones, ending BYU's last threat.
The game was played in intermittent snow, with winds gusting to 30 mph and a field that was worn and torn up despite being replaced a little more than a month ago. Several times ball carriers fell as they tried to make cuts.
Despite that, though, the Irish were able to average 5 yards a carry. Folston added 78 yards on 13 carries and George Atkinson III as the Irish amassed 470 yards total offense. Rees was 15-of-28 passing, with one interception.
The Irish defense held BYU to 415 yards total offense, 89 yards below their season average. The Cougars did manage to outrush the Irish by 8 yards, but couldn't come up with big plays when they needed it.
Notre Dame had a chance to take a two-touchdown lead early in the fourth quarter, but BYU's Craig Bills intercepted a pass by Rees to Troy Niklas in the end zone on second-and-14 from the 22-yard line. BYU wasn't able to get much going, though. Then Brindza kicked the 51-yard field goal with 6:53 left to give the Irish a 10-point lead. His 36 career field goals put him fifth on the school's all-time list.
Notre Dame scored on three of its first four possessions in the first half, opening a 17-7 lead. Daniels had six catches for 107 yards in the half. TJ Jones finished with five catches for 95 yards.
With Notre Dame ahead 14-7, it appeared BYU might keep pace with the Irish when it drove down to the Notre Dame 30. But Jarron Jones, filling in for Louis Nix III who underwent knee surgery on Thursday, stopped BYU's Jamaal Williams for a 1-yard gain on fourth-and-2.
Several Irish players switched numbers for the game. Freshman linebacker Jaylon Smith wore No. 13, instead of his usual No. 9, to honor linebacker Danny Spond, who ended his playing career before the season after suffering a paralyzing migraine headache for a second straight year. Senior wide receiver Luke Massa wore No. 78 in honor of high school teammate Matt James, a Notre Dame recruit who died his senior year of high school when he fell from a Florida balcony during spring break.
Notre Dame coach Brian Kelly became the first Notre Dame coach to win at least eight games in his first four seasons since Dan Devine (1975-78). Kelly also improved to 15-2 following bye weeks.
Among those on the Notre Dame sideline Saturday was New Jersey Gov. Chris Christie, who posed for a photograph with the Irish leprechaun.
BYU concludes the regular season Saturday at Nevada.