The 25-year-old golfer from Lubbock, Texas, finished at 4-under 280 to win by two strokes over six other players.
"When I woke up this morning, I just felt like it was going to be a good day," said the 6-foot-2 O'Hair, who won $954,000.
Stewart Cink had led going into the final round but slipped to a 74 and was passed by O'Hair on the back nine.
O'Hair's other win was at the John Deer Classic in 2005.
Beyonce flaunts bikini body, Blue Ivy in vacation pics
Couple mistakenly served bag of cash at McDonald's drive-thru