If Eagles fans have learned on thing over the past 12 months, it's that no one delivers in December quite like St. Nick. 

With Philadelphia's postseason hopes on the line against Houston, Nick Foles led the Eagles to a wild 32-30 win over the Texans on Sunday. No one delivers a dramatic win quite like Foles and this game was no different. Whatever magic Foles used in 2017 definitely carried over into this season, because he was at his best when the Eagles needed him most.

Eagles coach Doug Pederson clearly has total faith in Foles and he showed that multiple times in this game, starting in the first quarter, when he decided to take a gamble and go for it on a fourth-and-2 from the Texans' 37-yard line.

The result? A 37-yard touchdown pass from Foles to Darren Sproles

Pederson loves to play the percentages and he played them again in the second quarter when he decided to go for it on fourth-and-goal from the Texans' 1-yard line. This was after Foles had already converted one fourth down on the drive, and what did he do this time? 

St. Nick delivered again with another fourth-down touchdown pass. 

The Eagles' ability to convert on fourth down was a big reason they won the game. Sometimes playing the percentages on fourth down can blow up in your face, but not when Foles is your quarterback. Overall, they converted 100 percent of their fourth-down attempts against Houston (4 of 4), which was a big step up for an Eagles team that went into the game converting just 50 percent of their fourth downs on the season. 

Of course, Foles' magic isn't just limited to fourth down. The Eagles quarterback also made several other big throws in the game, including an 83-yard touchdown pass to Nelson Agholor that broke a 16-16 tie in the third quarter. 

Despite the big game from Foles, the Eagles still almost blew this one when the Texans came back from a 29-16 deficit to take a 30-29 lead. Texans fans were probably thinking there was NO WAY Foles could deliver again, but guess what, he did. 

Over the final two minutes of the game, Foles led the Eagles on a 72-yard drive that ended with Jake Elliott kicking a game-winning field goal from 35 yards out. Once again, St. Nick delivered. At this point, NFC playoff teams are probably hoping that the Eagles don't make the postseason and that's because Foles has proven that he has a bottomless reserve of magic in his right arm.

(Stream Saturday's and all of next Sunday's games on fuboTV, try it for free, and stream the CBS games on CBS All Access.)  

Jacksonville 17-7 over Miami

Jaguars: B+

Sometimes, the Jaguars defense plays so well that it doesn't matter who the quarterback is in Jacksonville, and this was one of those times. The Jaguars defense of 2018 finally played like the Jags defense of 2017. Not only did they hold the Dolphins to under 200 yards of offense -- marking just the second time this season they've held a team under 200 yards after the 2017 team did it four times -- but the defense also clinched the win in the fourth quarter when Telvin Smith picked off Ryan Tannehill and returned it 33 yards for a touchdown. The Jags also sacked Tannehill three times and forced a fumble in the third quarter. 

Dolphins: F

Someone must have forgotten to tell the Dolphins' offense that Miami's season was on the line, because they choked big time against Jacksonville. After scoring a touchdown on their opening drive, the Dolphins offense didn't do anything for the rest of the game. As a matter of fact, here's how their final nine possessions went: Punt, punt, missed field goal, punt, lost fumble, punt, punt interception, punt. The interception was especially ugly because it was an ugly pick-six thrown by Tannehill in the fourth quarter that iced the win for Jacksonville. With 183 yards, the Dolphins were held to under 200 yards of offense for the third time in four games. The Dolphins lost despite an impressive performance from a Miami defense that racked up six sacks and held Jacksonville's offense to just 10 points. 

Philadelphia 32-30 over Houston

Texans: B-

Deshaun Watson almost willed his team to a win in this game, but Houston didn't walk out of Philadelphia with a victory because the Texans had no answers for Nick Foles. The Texans gave up 519 yards of total offense against the Eagles, marking the first time since 2015 that they've surrendered 500 or more yards. It was also the highest yardage total Houston has given up since November 2012. The Texans defense seemed to struggle when it mattered most, with the Eagles converting 100 percent of their fourth downs (4-for-4) and 56.3 percent of their third downs (9-fo-16). As for Watson, he threw for 339 yards and totaled four touchdowns (two passing, two rushing) in the loss. 

Eagles: A-

The only thing more impressive than Nick Foles' performance might have been the play of Zach Ertz. Although the Texans knew he would be getting the ball a lot, their defense couldn't do anything to slow down the Eagles' tight end. Ertz caught 12 passes for 110 yards and two touchdowns and now holds the single-season record for most receptions by a tight end. Ertz now has 113 catches on the season, breaking the record of Jason Witten, who had 110 receptions in 2012. Darren Sproles also provided a spark for the Eagles offense with 108 total yards (32 rushing, 76 receiving).  

Minnesota 27-9 over Detroit

Vikings: A-

The Vikings got off to an ugly start with just four yards of offense in the first quarter, but they more than made up for it in the second quarter, when they scored two touchdowns over the final 92 seconds of the first half. After throwing an 8-yard TD to Stefon Diggs with 1:32 left in the second quarter, Kirk Cousins made an even bigger play when he connected with Kyle Rudolph on a 44-yard Hail Mary to end the half. Those two touchdowns were more than enough scoring help for a Vikings defense that shut out the Lions in the second half and held them to just 82 yards over the game's final two quarters. 

Lions: D-

Despite having a veteran quarterback, the Lions offense seems to get worse every week. Before getting pulled in the fourth quarter, Matthew Stafford completed just 18 fo 32 passes for 116 yards. Although the Lions did jump out to an early 9-0 lead in the this game, the entire team seemed to melt down after the Vikings closed the first half with two touchdowns over the final 92 seconds. The Lions offense was so bad in the second half that they didn't even reach Vikings territory until there was under one minute left to play. 

Dallas 27-20 over Tampa Bay

Buccaneers: C

The good news for the Buccaneers is that Jameis Winston doesn't seem to be throwing interceptions anymore. The bad news is that he's still turning the ball over. Winston threw for 336 yards, but overshadowed himself with two lost fumbles that led to two Cowboys touchdowns. The two turnovers also overshadowed a Buccaneers defense that gave up a season-low 232 yards. 

Cowboys: B

They say defense wins championships and everyone in Dallas probably believes that after watching the Cowboys ride their defense to a division title on Sunday. The Cowboys needed a win over Tampa to clinch the NFC East and they were able to do that thanks to a defense that came up in the clutch. The Cowboys defense forced two Jameis Winston fumbles, including one in the first quarter that Jaylon Smith returned 69 yards for a touchdown. The Cowboys defense also set up a touchdown in the third quarter when they recovered a fumble at Tampa's 4-yard line. The Cowboys also sacked Winston three times.  

Green Bay 44-38 over New York Jets (Overtime)

Packers: B+

Going into Sunday's game, the Packers were winless on the road this year (0-7) and Aaron Rodgers made sure Green Bay didn't end the season with zero road wins. Rodgers almost single-handedly willed the Packers to a win in this game with 442 passing yards and four total touchdowns (two passing, two rushing). With the Packers trailing 35-23, Rodgers led three touchdown drives over the final six minutes of regulation and overtime. Those three drives ended with two touchdown runs by Rodgers and a 16-yard pass to Davante Adams that won the game in overtime. The packers totaled 540 yards against the Jets, which was their second-highest total ever under Rodgers. 

Jets: B

The Jets probably won't be happy about the fact that they blew a 15-point lead in the fourth quarter, but they should be happy knowing that they definitely have their quarterback of the future. In a showdown with Aaron Rodgers, Sam Darnold held his own, throwing for 341 yards and three touchdowns. Although Jason Myers uncharacteristically missed a field goal, the Jets special teams made up for it in the second quarter when Andre Roberts returned a kickoff 99 yards for a touchdown. But none of that mattered because the Jets had no answer for Rodgers. The Packers' 540 total yards was the most the Jets have given up since 1998. 

Indianapolis 28-27 over New York Giants

Giants: B-

Eli Manning played arguably his best game of the season, but most Giants fans will probably only remember the fact that he killed their comeback chances in the fourth quarter when he threw an ugly interception on the Giants' final offensive play of the game. Before that pick, Manning lit up the Colts for 309 yards and a touchdown, and he did that on a day where the Colts absolutely shut down Saquon Barkley, holding the rookie to just 43 yards on 21 carries. 

Colts: B

The Colts dug themselves into an early 14-0 hole, but then Andrew Luck and T.Y. Hilton both grabbed a shovel and dug them right out. Luck threw for 355 yards and two touchdowns and most of the came when the Colts needed it most. With Indy trailing 27-21 and under four minutes to play, Luck led the Colts on a game-winning drive that ended when he hit Chester Rogers for a one-yard score with just 55 seconds left to play. Although Hilton didn't score a touchdown against the Giants, he did plenty of damage, catching seven passes for 138 yards. 

Cleveland 26-18 over Cincinnati

Bengals: C-

The Bengals' special teams came to play in Cleveland, but no one else on the team really did. The Bengals converted a fake punt AND blocked a Browns punt in the fourth quarter that set up a touchdown. It was a dark day for the Bengals, who somehow were held to NEGATIVE-15 net passing yards in the first half. Fittingly, this loss means the Bengals are now guaranteed to finish the season as the last-place team in the AFC North, marking the first time in eight years they've finished in the division cellar.   

Browns: B+

Baker Mayfield might not win rookie of the year, but he's doing his best to make a late case. The Browns offense rolled against the Bengals and a big reason for that was Mayfield, who completed 27 of 37 passes for 284 yards and three touchdowns. At one point in the game, Mayfield completed 14 straight passes. Jarvis Landry also showed off his quarterbacking skills with a wildly accurate 63-yard pass to Breshad Perriman. The win means the Browns won't be finishing in last place in the AFC North, which is big news for a Cleveland team that had finished in last place in each of the past seven seasons. 

Atlanta 24-10 over Carolina

Falcons: B+

It took 16 weeks, but the Falcons defense finally put together their most impressive performance of the season. Not only did they force four turnovers, but they also limited the Panthers to just 10 points, which is the lowest total they've held a team to all season. Offensively, Matt Ryan wasn't perfect (15 of 26), but he did throw three touchdown passes to three different receivers (Mohamed Sanu, Calvin Ridley, Julio Jones). 

Panthers: C-

Taylor Heinicke made the first start of his career in this game and he's probably going to want to burn all the game film from his performance. Heinicke threw three interceptions and the ugly part for the Panthers is that all three picks came inside of Atlanta's 30-yard line. That total includes an interception that Heinicke threw from the Falcons' 4-yard line when Carolina was threatening to score just before halftime. On a positive note, Heinicke knew to throw as many passes as possible to Christian McCaffrey. McCaffrey caught 12 passes for 77 yards while also adding 101 rushing yards. 

New England 24-12 over Buffalo 

Bills: D

The Bills went into Sunday's game with one of the best rushing defenses in football, but that's likely going to change after they got steamrolled by the Patriots. Buffalo surrendered 273 yards on the ground, marking just the second time in five years that a team has rushed for more than 270 yards on them. Of course, it wasn't just the Bills defense that was bad; everyone seemed to be struggling for the Bills. Josh Allen threw two interceptions, tight end Jason Croom lost a fumble and Stephen Hauschka even missed a 43-yard field goal. 

Patriots: B

Losing Josh Gordon might hurt the Patriots down the road, but it didn't hurt New England in this game, and that's because Bill Belichick decided run the ball down the Buffalo's throat. Led by Sony Michele's 116 yards, the Patriots totaled 273 yards on the ground, which was the team's highest rushing total ever with Tom Brady under center and the team's second-highest total under Belichick. The Patriots had four players rush for more than 35 yards, with Rex Burkhead (39), James White (41) and Cordarrelle Patterson (66) all joining Michele. It's a good news the Patriots running game was working, because Brady was off. The Patriots quarterback threw two interceptions and finished with just 126 yards passing. 

Chicago 14-9 over San Francisco

Bears: B-

The Bears won't get any beauty points for this win, but Mitchell Trubisky might for his performance. With the playoffs right around the corner, Trubisky seems to be getting hot at the right time. The Bears quarterback only threw four incompletions in a game where he finished 25 of 29 for 246 yards and a touchdown. The Bears' red-zone defense also came up big against the 49ers. Although San Francisco got inside the Bears' 15-yard line a total of three times, the 49ers score zero touchdowns. 

49ers: B

The 49ers defense kept things close against the Bears with an impressive performance that included three sacks and two turnovers. The second turnover came with just under two minutes left to play when Tarvarius Moore added some drama by stripping Bears receiver Allen Robinson. That turnover gave the 49ers one more shot at a win, but Nick Mullens was no match for a Bears defense that shut him down for nearly all four quarters. Mullens threw for 241 yards, but also threw a key interception in the fourth quarter when the 49ers had driven down to Chicago's 20-yard line. 

Los Angeles Rams 31-9 over Arizona

Rams: A

Todd Gurley didn't play on Sunday, but that didn't matter because the Rams had C.J. Anderson. If you didn't even know that Anderson played for the Rams, don't be ashamed, because it appears the Cardinals didn't know either. After signing with the Rams on Tuesday, Anderson went out and rolled the Arizona defense for 167 yards and a touchdown on 20 carries. The Rams also got a solid game from Jared Goff, which had to be encouraging, considering his recent struggles. Goff overcame an early fumble to finish 19 of 24 for 216 yards and a touchdown. Defensively, Aaron Donald continued his dominant season with three of the Rams' four sacks. 

Cardinals: D

What we learned from this game is that Larry Fitzgerald might be the best quarterback on the Cardinals' roster. In what might be his final game ever, Fitzgerald threw a 32-yard touchdown pass to David Johnson for Arizona's only touchdown, and just for good measure, Fitzgerald also caught six passes for 53 yards. 

New Orleans 31-28 over Steelers

Steelers: B

The final 10 minutes of this game couldn't have been any more disastrous for the Steelers and it might have cost them their season. With the game on the line in the fourth quarter, the Steelers lost two fumbles over the game's final 10 minutes, including a fumble by JuJu Smith-Schuster that came with 32 seconds left, with the Steelers in a position to tie the game. Mike Tomlin will also probably be regretting the fact that he inexplicably called for a fake punt from his own 42-yard line while leading 28-24 with just over four minutes left to play in the fourth quarter. The chaotic final minutes overshadowed a huge game from Ben Roethlisberger (380 yards, three touchdowns) and Antonio Brown (14 catches, 185 yards, two touchdowns). Brown almost saved the season when he made a 19-yard catch on fourth-and-15 with just over one minute left to play. 

Saints: B+

The New Orleans offense turned into the Michael Thomas show on Sunday as the Saints receiver caught 11 passes for 109 yards. Thomas' biggest catch came from just one-yard out when he caught a touchdown pass from Drew Brees that gave the Saints a 31-28 lead with just 1:25 left to play. Although the Saints defense struggled against the Steelers for the better part of three quarters, they came threw in the clutch with two huge turnovers in the fourth quarter. New Orleans also stopped the Steelers cold when Pittsburgh tried to run a fake punt on fourth-and-5 in the fourth quarter. 

Seattle 38-31 over Kansas City

Chiefs: B-

The Chiefs have a huge hole heading into the playoffs and that hole is their defense. Although Patrick Mahomes put up big numbers (273 yards passing, three touchdowns), it wasn't enough to overcome a Chiefs defense that surrendered 464 yards in Seattle, including 210 on the ground, marking the first time since 2016 that the Chiefs have given up more than 200 yards rushing. The Chiefs also lost two fumbles, which arguably cost them 10 points. A Damien Williams fumble in the second quarter set up the Seahawks for an easy 21-yard touchdown drive. On another possession later in the quarter, Chris Conley fumbled just before halftime on a drive where the Chiefs had moved into Seahawks territory. The Chiefs only had the ball for 24:58 in this game and are now 2-9 all-time under Andy Reid when they have possession for less than 25 minutes. 

Seahawks: A+

The Seahawks had to play a nearly perfect game to beat the Chiefs and that's exactly what they did. Russell Wilson might have even thrust himself into the MVP conversation with a wildly impressive game where he threw for 271 yards and three touchdowns. Wilson also rushed for 57 yards. The Seahawks were also able to keep the Chiefs offense off the field thanks in large part to a ground attack that totaled 210 yards. Thanks to Chris Carson (116 yards, two touchdowns), Seattle had the ball for 35:02, compared to just 24:58 for the Chiefs. Although the Seahawks defense didn't stop Patrick Mahomes, they did come up with several big plays and they also forced the only two turnovers in the game. One of those turnovers was a forced fumble by Justin Coleman that kept the Chiefs from putting points on the board just before halftime. With the win, the Seahawks have now clinched a playoff berth and proven that they can play with any team in the NFL

Oakland 27-14 over Denver

Broncos: D-

It's difficult to imagine how the Broncos could have played worse in this game. They came out with an extremely conservative game plan against a poor Raiders defense, and it hampered them right from the start. They gave up a 99-yard punt return on a play where they should have downed the ball on the 1-yard line. Case Keenum was sloppy with the ball and was intercepted twice on terrible passes late. The pass rush did not bother Derek Carr all that much. And the run defense could not contain Doug Martin. The Broncos dropped to 6-9 with the loss, meaning they'll finish below .500 in consecutive seasons for the first time since 1971-72.

Raiders: A

The Raiders did not necessarily play a perfect game, but they did enough good things to earn themselves an A in what could possibly be the final game they ever play in Oakland-Alameda County Stadium. Dwayne Harris started things off with a 99-yard punt return. Doug Martin ran well with 21 carries for 107 yards and a score. Derek Carr took care of the football. Jordy Nelson made big plays on third down. The defense played one of its best games of the season. And while the Raiders may have cost themselves the No. 1 overall pick, they also gave the fans in the Black Hole a great potential going away present.