Rookie Alvin Kamara ran for 106 yards and a touchdown, rookie Trey Edmunds had a 41-yard rushing touchdown in the fourth quarter and quarterback Drew Brees even ran in for a score as the Saints racked up 298 rushing yards in winning their seventh straight game.
The Saints (7-2) set a team record with six rushing touchdowns and had their third-highest rushing total in franchise history.
It was also the first time Buffalo allowed six rushing touchdowns. It was the team's worst home loss since a 56-10 defeat against the New England Patriots on Nov. 18, 2007 and the worst defensive performance under new head coach Sean McDermott.
The Bills (5-4) were trying to improve to 6-3 for the first time since 1999, which was the last year the team made the playoffs. Instead, the Bills have lost consecutive games for the first time this season.
Ingram's three rushing touchdowns were a career high. He scored on a 1-yard run on the Saints' first series, a 3-yard run in the second quarter and a 3-yard run in the third quarter.
Defensive tackle Sheldon Rankings intercepted a pass that bounced off the chest of Bills tight end Charles Clay and returned it to the Bills 3-yard line to set up Ingram's third touchdown.
Kamara found the end zone on a 5-yard run on the Saints' opening drive of the second half that made it 24-3.
Brees' 7-yard rushing touchdown came at the end of a 94-yard drive in the third quarter on which the Saints ran the ball on all 10 plays. Brees was 18-of-25 passing for 184 yards. Buffalo remains the only NFL city in which Brees has not thrown a touchdown pass. He has played there three times.
Wil Lutz kicked field goals from 53 and 23 yards for the Saints.
Stephen Hauschka's 37-yard field goal gave the Bills a 3-0 lead four minutes into the game. Rookie Nathan Peterman threw a 7-yard touchdown pass to tight end Nick O'Leary with 1:54 remaining in the fourth quarter.
Bills quarterback Tyrod Taylor was 9 of 18 for 56 yards and an interception before being replaced by Peterman late in the fourth quarter. LeSean McCoy had a 36-yard run on the Bills' opening drive, but finished with 49 yards on eight carries. Taylor rushed three times for 27 yards.
NOTES: Saints RB Daniel Lasco was taken off the field by ambulance and transported to a local hospital after sustaining a spinal cord injury while making a special teams tackle in the second quarter. Lasco had movement in his extremities, the team announced. ... Saints LB A.J. Klein (hamstring) and Bills DE Jerry Hughes (shin) left in the first half and did not return. ... Saints LT Terron Armstead (shoulder) and RG Larry Warford (abdomen) started after being listed as questionable. S Kenny Vaccaro (groin) did not play. ... Bills TE Charles Clay (knee) returned after missing three games. ... Buffalo was without LT Cordy Glenn (foot/ankle), CB E.J. Gaines (hamstring) and WR Zay Jones (ankle).