The deal is worth $10 million, according to CBSSports.com.
Originally signed by the Vikings to back up Christian Ponder last March, Cassel took over the Vikings' starting job in September, filling in for an injured Ponder in a win against the Pittsburgh Steelers in London.
He went on to start six games for the Vikings, emerging from their quarterback carousel as the starter at the end of the season once Ponder and Josh Freeman had fizzled. Cassel threw for 1,807 yards with 11 touchdowns and nine interceptions in nine games total. He passed for 382 yards in a Dec. 15 win against the Philadelphia Eagles.
Cassel had signed a two-year contract with the Vikings, but it included a clause that let him void his 2014 deal within five days of the Super Bowl. Cassel opted out of his contract on Feb. 7, though the Vikings had stayed in contact with his agent and maintained they wanted to bring the 31-year-old quarterback back on a new deal.
Cassel wound up leading the Vikings in passing yards and touchdowns, despite starting three fewer games than Ponder and losing his job for nearly two months in a bizarre season that saw Minnesota use three different starters in as many weeks in October.
Cassel's new deal with the Vikings was earlier reported by NFL Network.
ESPN.com Vikings reporter Ben Goessling contributed to this report.