The deal pays him US$1.5 million per season in 2013 and 2014 with a club option for 2015 worth $4 million.
He signed a one-year deal in December for $600,000.
The oft-injured 30-year-old missed the 2009 and 2010 seasons and most of 2011 due to shoulder operations. McGowan was 0-2 with a 6.43 earned-run average last season.
McGowan is expected to be in the Blue Jays' starting rotation this year, but pulled himself out of a minor league game over the weekend with what was diagnosed as plantar fasciitis. He is currently listed as day to day.
Drafted by the Jays in 2000, McGowan is the longest continuous tenured player in the organization. The 6-3, 232-pound native of Georgia is 20-24 in 80 career games, 60 starts for Toronto, with a 4.80 ERA. In 2008 he made a career high 27 starts posting a 12-10 record with a 4.08 ERA with two complete games and one shutout.