Here's a switch: The Baltimore Ravens won on the strength of their offense.

Even more surprising, the Ravens used the pass more than their usual punishing running game in a 38-24 victory over the Kansas City Chiefs on Sunday.

Joe Flacco went 26 for 43 for 307 yards and three touchdowns, all career highs. The Ravens ruined the head coaching debut of Kansas City's Todd Haley as they amassed a franchise-record 501 yards, yet needed a 31-yard touchdown catch by Mark Clayton with 2:06 left to break a tie.

Willis McGahee scored from the 1 with 31 seconds remaining to clinch it.

Perhaps the most unexpected development during a strange afternoon was that the Chiefs kept it close despite playing without quarterback Matt Cassel, whose sprained left knee did not heal enough to enable him to make his Kansas City debut.

That left the quarterbacking responsibilities to Brodie Croyle and Tyler Thigpen, who entered with a collective 1-18 record as NFL starters. The Chiefs didn't get their initial first down until deep into the second quarter, but used a blocked punt and a long interception return to keep it close until their offense finally got rolling.

Croyle played all but one series and went 16 for 24 for 177 yards and two touchdowns.

Larry Johnson, the last player to run for 100 yards against the Ravens (in December 2006), finished with 20 yards on 11 carries.

Ravens tight end Todd Heap had five catches for 74 yards. He made four first downs and scored a touchdown.

Baltimore, which led the AFC in rushing last season, didn't entirely abandon the usual script. Ray Rice ran for 108 yards, McGahee added 44 and the Ravens finished with 198 yards rushing.

Down 14-10, the Ravens regained the lead with a 9-yard touchdown pass from Flacco to Heap, who caught the ball around the 3 and bulled into the end zone late in the third quarter.

Croyle then connected with Mark Bradley for a 50-yard completion _ the longest of the quarterback's career _ to set up a 53-yard field goal by Ryan Succop, the last player chosen in the 2009 draft.

After Baltimore took a 24-17 lead on a 1-yard run by Le'Ron McClain with 8:10 remaining, Croyle went 5 for 6 during an 80-yard drive capped by a 10-yard touchdown pass to Sean Ryan.

Despite amassing a 215-56 advantage in total yardage, the Ravens led only 10-7 at halftime. Flacco went 6 for 7 for 54 yards in a 70-yard march that ended with a 3-yard touchdown pass to McGahee.

Thigpen replaced Croyle in the second quarter, but the switch failed to produce a first down. In their first four series, the Chiefs could muster only 10 yards.

With that kind of production, it was no surprise that Kansas City's first touchdown of the season came from its special teams on a blocked punt by Jon McGraw that he recovered in the end zone. It was the first punt block for a TD against Baltimore since 1998.

The Chiefs went up 14-10 in the third quarter when Derrick Johnson returned an interception 70 yards to set up Croyle's TD pass to Dwayne Bowe.