Graham was born on 9 September 1982 to Richard and Maureen Onions. He has an elder sister Christine. Onions attended St Thomas More Catholic School in Blaydon, and at Gateshead leisure centre he took the opportunity to try a variety of sports. He was adept at badminton and was selected for the England team at under-15 level. From playing his early cricket on the streets, Onions became part of Gateshead Fell Cricket Club.
After being spotted by Geoff Cook, Durham's coach, Onions made his second XI debut for the club at the age of 18. He was offered a contract with the club and opted to become a professional cricketer rather than take a sports science choice at university, which was his other option. Onions started in the team as the fourth bowler. Looking back on his early career, he felt that he tried too hard early on. On one occasion he recalled how "I remember being thrown the ball at an important stage of a game at Scarborough, and Phil Jaques hit me for four successive fours. I was thinking 'I'm not sure I can do this.' But Dale Benkenstein was a huge influence as captain, and you have to learn from all those experiences. Otherwise I could not have done what I did in my first season of Test cricket. I often went for 15 to 20 runs in my first three overs, but always came back strongly." In 2006, Onions regularly opened the bowling for Durham with Ottis Gibson.
On 3 September 2006, he received his first England call-up, being brought into the ODI squad to face Pakistan, following an injury to Darren Gough. However, he did not play any international fixtures. Onions was named in England's provisional 30-man squad for the 2006 ICC Champions Trophy after a successful season that year, and toured Bangladesh with the England A team under the future England coach Peter Moores. In July 2007 he was selected for the England Lions team to face the Indian tourists in a warm-up match. On 21 February 2008 Onions took 7/39 in a one-day fixture against Maharashtra, his best one day bowling figures to date.
In January 2009, Onions, returning from injury, played in the losing Stockton (Newcastle) side against the Tamworth side in the New South Wales country cup competition played at the Sydney Cricket Ground. On 29 April 2009 Onions was named in the England squad for the upcoming Test series against West Indies, at the expense of his Durham team-mate Steve Harmison. He celebrated his call-up by taking 6/31 for his county against Somerset. He followed this up by taking 5/38 in the first innings on his Test debut at Lord's, going on to take seven wickets in the match. He picked up three further wickets in the second match. In July 2009 he was named as part of the provisional sixteen man squad to face Australia in the Ashes, at the expense of his Durham team-mate Steve Harmison, however he was not selected for the first Test. He took three wickets in the first innings of the second Test at Lord's, for 41 runs, and went wicketless in the second innings as England won, Andrew Flintoff and Graeme Swann taking the bulk of the wickets. He took 4/58 and 1/74 in the third Test at Edgbaston, as England took a series lead. Two of these wickets fell with the first two balls on the second day. Australia took an innings victory in the fourth Test, Onions taking 2/80.
Onions was selected for England's tour of South Africa in November 2009 to January 2010. His bowling average for the series was in the 40s, but his batting twice helped England save a Test in a battling rearguard action on the fifth day. He was dropped for the fourth and final Test in favour of Ryan Sidebottom. Onions felt that he was denied an opportunity to bowl in conditions more suited to his style of bowling than previous matches and was surprised by his omission. He commented that "When Straussy gave me the bad news, my reaction was one of sheer surprise. You could have knocked me down with last year's Newcastle season ticket. I tried to rationalise what had happened. I know my stats haven't been brilliant, but I feel I have bowled well enough to earn a better return." South African fast-bowler Dale Steyn remarked that South Africa too were surprised at Onions being dropped: "He would have been a handful on this wicket, he gets very tight into the stumps and could have been very dangerous ... obviously Onions has troubled a lot of our batsmen throughout the series and it's surprising to see he wasn't playing. It was a bit of a relief in a way."
Although he embarked on the Test leg of England's tour of Bangladesh in March 2010, Onions returned home with a back injury without playing a match. Alastair Cook, England captain on the tour, voiced his disappointment that Onions would not be able to play for England: "He was a huge part of our plans and he still is, obviously, because of the way he bowled in South Africa, where he was unlucky not to take more wickets than he did. He bowled really well there, and I was expecting him come to these conditions and bowl well here as well." The injury prevented Onions from playing most of the English cricket season. He also underwent surgery on his left knee to repair cartilage. Speaking of his disappointment at not being able to play for England, Onions said "The last few months have been massively frustrating. When you've had a place in the team for a while and you lose it it's hugely disappointing and hurts a lot. Before the injury everything had been like a dream for me, all I ever wanted to do was play for England, but the last six months have been tough." In April 2010 Wisden Cricketers' Almanack named him as one of its five cricketers of the year for 2009. Onions did not recover in time to play in the 2010–11 Ashes series. However he was named in England's 27-man performance squad the following March after recovering from surgery.
Recovered from injury, Onions played 11 County Championship matches, taking 50 wickets at an average of 26.82. In August Onions was recalled to the England squad as cover for James Anderson for the final match of the four Test series against India. At that stage in the season he had played nine County Championship matches, taking 39 wickets at an average of 28.82. In January 2012 England toured the UAE where they would face Pakistan. Onions was initially included as an unofficial back up player, but when fast-bowling all-rounder Tim Bresnan failed to recover from elbow surgery Onions became a full member of the squad. Though he did not play for England in the winter, Onions pressed his case for selection in April by taking his best bowling figures since 2009. Playing against Middlesex in the County Championship, Onions claimed 6/45 in the first innings, passing 300 first-class wickets, and twice dismissed struggling England captain Andrew Strauss.
England won the first two Test of the three-match series against the West Indies in June 2012, and for the final fixture front-line fast bowlers James Anderson and Stuart Broad were rested. As a result, Onions played his first Test since his back injury in 2010. Rain washed out three days of the match which ended in a draw and Onions took 4/88.
Onions describes his bowling as:
I worked hard with Ottis [Gibson] in his England role to develop an inswinger. My stock ball is slightly back of a length, hitting the seam, but I bowl the inswinger slightly fuller and it's a big wicket-taker, especially against tailenders. I share Ottis's belief that you have to test the batsman from the very first ball. As a fast bowler, you're going to bowl a limited amount of overs, so I treat every ball as though it's my last. If you take wickets early it gets you on a roll and gets the team going, so I'm a lot more focused than I used to be in my preparations