The Ravens remain in contention for the AFC North title heading into the Christmas showdown at Pittsburgh -- but barely. The Ravens nearly squandered a 10-point fourth-quarter lead to the struggling Philadelphia Eagles on Sunday, winning only when the Eagles' final two-point conversion try with four seconds left was tipped away.

Once again, the Ravens scored early and struggled to maintain consistency on offense, which wasn't helped by what John Harbaugh called an "all-time worst" play call.

It's time to grade the Ravens, beginning with the offense:

QUARTERBACK: C-

On the bright side, Joe Flacco's 34-yard touchdown throw to Steve Smith was elite, dropping it over the top of the cornerback for one of his best throws of the season.

On the down side, there's no excuse for Flacco not changing the call on his ill-fated interception, and even after he didn't change the call, there's no excuse for throwing that pass. He said he simply never saw the defender. That mistake put the Eagles back in the game.

Flacco finished 16-for-30 for 206 yards, with two touchdowns and one interception. But as has been the case all season, he was high on some easy throws 

Simply put, Flacco is supposed to be the leader and he needs to take command. If the coordinator sends in an all-time worst play call, it's up to Flacco to take charge and change it.

 

RUNNING BACKS: B+

Terrance West, who was relegated to just two carries for 2 yards at New England on Monday, was the workhorse against the Eagles with 13 carries for 77 yards, including a season-long 41-yard run. West also led the team with four receptions for 45 yards.

Kenneth Dixon, who had a strong game at New England, carried nine times for 36 yards, including a 16-yard touchdown. That's a healthy 5.1-yard average per carry by the Ravens backs.

Kyle Juszczyk had three catches, as the backs remain the most popular receiving targets on the field.

OFFENSIVE LINE: C+

Joe Flacco was sacked three times, with the Eagles getting some push right up the middle. Vladimir Ducasse had trouble in pass protection and his holding penalty wiped out a nice run by Dixon.

The line, though, opened some big holes for the Ravens run game.

Ronnie Stanley is looking healthy again and protecting Flacco's blind side.

TIGHT END: C-

The tight ends were hardly a factor in the passing game, with Dennis Pitta catching two passes for 16 yards and Darren Waller one for 11. Give Waller credit, though; he dragged defenders the final 2 or 3 yards to fight for a first down.

Nick Boyle played 19 snaps as a blocking tight end, and the Ravens had major success running the ball.

WIDE RECEIVER: C-

Ravens receivers caught only six passes all day; Steve Smith had a 34-yard touchdown grab that was a great throw by Flacco, and Mike Wallace turned a short slant into a 54-yard gain.

Kamar Aiken caught the only two passes thrown his way, including his first touchdown of the season. Breshad Perriman dropped another short pass, and it remains a mystery why the Ravens haven't used him more vertically this season.

Michael Campanaro made his 2016 debut and ran for 39 yards on a jet sweep. He played six snaps on offense and gives the Ravens  another nice slot option.

READ ALSO: Raven's holiday wish list