He was signed by the Buffalo Bills as an undrafted free agent in 2012 partway through the season after releasing Brian Moorman. He was released on October 4, 2013, after struggling in a Thursday Night Football game against the Cleveland Browns, with Moorman being brought back in to replace him. Powell played 18 career games with Buffalo, averaging 44.7 gross yards per kick over 100 kicks (38.3-yard net average per kick) with 33 landing inside the 20-yard line.
The Bengals signed Powell on December 17 after Kevin Huber was injured. He was released two weeks later after punting the football only 10 yards in a game against the Baltimore Ravens.