Portis was highly touted as one of the nation's top dual-threat quarterback prospects out of high school. Portis attended the University of Florida for one season and then transferred to the University of Maryland. In 2009, he transferred again to Division II California University of Pennsylvania, where he set school records with 3,421 passing yards, 36 touchdowns and 3,870 total offensive yards throwing.
Portis grew up in Woodland Hills in Los Angeles, California with his mother Patricia Portis. He initially attended Redondo Union High School, where he played junior varsity for one year. After his mother had a disagreement with the head coach over playing time, Portis transferred to Long Beach Polytechnic High School, and then again to William Howard Taft High School. At Taft, he was a two-year letter-winner at quarterback. He threw for 2,294 yards, 36 touchdowns, and seven interceptions, and ran for 865 yards and 13 touchdowns. As a senior, he was named an all-state player, league offensive player of the year, and a Los Angeles first-team all-city player. Scout.com assessed him as the fifth-best dual-threat quarterback in the nation. He was highly recruited out of high school and received offers from Florida, Maryland, Kansas State, Oregon, Oregon State, Utah, and Washington.
Portis attended college at Florida for one season and saw action in six games. In 2005, he made six out of 11 completions for 81 yards. He threw one interception and was sacked three times. He was Florida's fourth-leading rusher with 163 yards on 24 carries. He transferred to Maryland in 2006 and was required by NCAA rules to sit out for a season. In 2007, he was caught cheating on an exam and suspended for the season under the university's honor code policy. In 2008, Portis mostly substituted for starting quarterback Chris Turner for one option play at a time. He completed one of three pass attempts for four yards and made 31 carries for 186 rushing yards and a touchdown. Portis' playing time decreased throughout the season, with him seeing action on just eight plays in the last half of the season.
On January 7, 2009, it was announced that Portis would transfer to California University of Pennsylvania in the spring semester. Since the school competes at the Division II level, he had two years of eligibility remaining with the California Vulcans. He started the season-opener, in which eighth-ranked California lost to unranked Saginaw Valley State, 23–17, and recorded 14 completions on 31 attempts for 145 yards and two interceptions, and led the team in rushing with 12 carries for 82 yards. In that one game, he exceeded his previous combined career pass attempts of 14. After dropping the second game, 17-10, to sixth-ranked Bloomsburg University, Portis turned his team around and threw for 202 yards in a 30-23 Cal U win over West Chester University. Portis now leads the Pennsylvania State Athletic Conference with 18 touchdown passes, a passer rating of 179.4, and led the Vulcans to their 5th straight PSAC West Championship. In the Division II semifinals against second-ranked Northwest Missouri State, Portis completed 20 of 36 pass attempts for a career-high of 367 yards and three touchdowns, but California fell, 56–31. Upon the conclusion of the season, Portis had set school records with 3,421 passing yards, 36 touchdowns and 3,870 total offensive yards. He declined to enter the 2010 NFL Draft, and said, "I think my best chance at the pros is to stay at California another year." In 2010, Portis was charged with theft, receiving stolen property, and fraud for using a stolen credit card at a mall near Pittsburgh.
Portis was signed by the Seattle Seahawks as an undrafted free agent following the 2011 NFL Draft on July 26, 2011. He made the Seahawks roster on September 3 behind starter Tarvaris Jackson. On August 11, 2011, against the Chargers, he went 5 for 6 for 69 yards and 1 TD in a preseason win. Portis was cut by the Seahawks on August 31, 2012 and signed to their practice squad on September 1, 2012. He was then again released from the Seahawks on May 21, 2013 after a May 5 DUI arrest.
On March 8, 2013, Portis was signed by the Toronto Argonauts of the Canadian Football League.
Portis was re-signed by the Seahawks on April 3, 2013 to a two-year contract. On May 21, Portis was waived after news surfaced of his DUI arrest.
Portis re-signed with Toronto on June 2, 2013.
On July 15, 2014, Portis was traded by the Toronto Argonauts to the Winnipeg Blue Bombers. Following the 2014 CFL season, Portis resigned with the Blue Bombers prior to becoming a free-agent. On June 29, 2015, Portis was released from the Bombers.
On May 24, 2017, Portis was assigned to the Washington Valor. He was placed on reassignment on July 20, 2017.
He is the cousin of retired Washington Redskins running back Clinton Portis. On May 5, 2013, Portis was arrested for driving under the influence, and had a blood alcohol level of 0.092, .012 higher than the state of Washington's limit.