The 6-foot-4, 228-pound Savage made three stops in college, bouncing from Rutgers to Arizona, where he did not play a down, and finally to Pittsburgh.
"All of what happened might make him a better quarterback down the road," O'Hara coach Danny Algeo said. "He's had to handle adversity a couple of times."
First-year Texans coach Bill O'Brien was at Pittsburgh's pro day in early March and met with Savage afterward.
"I think he's a guy that has a good arm. I think he's an accurate passer, he's smart, and he's articulate," O'Brien said. "We're excited about working with this guy and teaching him how we do things."
As a true freshman at Rutgers, Savage threw for 2,211 yards and 14 touchdowns. He was named the team's offensive most valuable player.
The blue-chip recruit's second year with then-coach Greg Schiano and the Scarlet Knights took a turn for the worse. Slowed by a hand injury, he started only four games and ended up losing his job to freshman Chas Dodd. That prompted a transfer to Arizona.
While sitting out the 2011 season at Arizona, the unexpected happened. Head coach Mike Stoops was fired after a 1-5 start and Rich Rodriguez, who employs a spread attack not fitting Savage's playing style, was announced as his replacement. That left Savage again searching for a place to call home.
Savage found it, after another year on the sideline per NCAA rules, with Pittsburgh. He made the most of his final season of eligibility. Last fall, despite being sacked 43 times, he threw for 2,958 yards and 21 scores with nine interceptions.
"I just think, from a football standpoint, hitting rock bottom, I think it was the best thing for me," Savage said. "It's great to go to a school and play for three years and be the man for three years, but I think you develop as a man doing the scout team as a redshirt junior and humbling yourself."
At Houston, Savage, 24, will compete for playing time with Case Keenum, Ryan Fitzpatrick, and T.J. Yates.
This article contains information from the Associated Press.