The 40-year-old quarterback completed 15-of-24 passes for 234 yards and beat the Cowboys in the post-season for the first time in four tries.
Minnesota's defense forced three turnovers and made six sacks.
Sidney Rice caught six passes for 141 yards with three touchdowns, Adrian Peterson gained 63 yards on 26 carries, while Ryan Longwell kicked two field goals for the Vikings (12-4), who play the top-seeded Saints next Sunday in New Orleans for the NFC title.
Dallas' Tony Romo lost two fumbles and threw one interception.
He passed for 198 yards with no touchdowns.
Felix Jones rushed for 69 yards on 14 carries and Shaun Suisham made only 1-of-3 field goals for the Cowboys (11-5), whose four-game winning streak ended.