Hamill made his senior debut on 7 April 2007 in a 1–0 defeat to Hearts and won the fans' Man of the Match award for the game. Hamill started against Hibernian and made two further substitute appearances that season.
At the start of the 2007–08 season his hard work over the summer was rewarded with a start against Celtic, Kilmarnock held the hosts to a 0–0 draw in what was Kilmarnock's first point at Celtic Park in over nine years. He scored his first goal for the club in a Scottish Cup game against Airdrie, following this up with his second goal in the competition against Celtic in a 5–1 defeat in the next round. Hamill firmly established himself as a member of the first team that season making thirty two league appearances.
Hamill also scored on the opening game of the 2008–09 season, in a home game against Hibernian, which finished 1–0 to Kilmarnock. He repeated the feat in the two following season, scoring the third goal in a 3–0 win against Hamilton and against Rangers in a narrow 2–1 defeat scoring a late consolation penalty. He was sent off for the first time in his career on 29 January 2011 picking up a second yellow in the 29th minute against Hamilton.
Hamill made 149 appearances in all competitions for Kilmarnock, scoring 19 goals.
Hamill signed for Hearts on 25 May 2011, on a three-year contract. He made his competitive debut against Paks in a Europa League qualifier, and scored a penalty in first half stoppage time to secure a 1–1 away draw, with his league debut came on 7 August against Motherwell. Hamill quickly became Hearts new penalty taker in the absence of Kevin Kyle, having scored one in a friendly against Royal Antwerp and scored against St Mirren on 17 September in the league. His first miss from the spot came against St Johnstone a game Hearts lost 2–1. On 24 December, Hamill was stretchered off during a match against Motherwell, having suffered a recurrence of an ankle injury. Both penalties after his miss were taken by other players and missed with Hamill pledging to return to penalty duties. Towards the end of the 2011–12 season, Hamill suffered a rupture of a cruciate knee ligament. On 19 April 2014, during a 2-0 Scottish Premiership win over Ross County, Hamill was involved in a curious altercation while celebrating scoring a penalty, having been shoved by Ross County player Yann Songo'o - he then barged into Staggies manager Derek Adams on the touchline, resulting in the Ross County boss falling to the floor and Hamill receiving the second yellow card from referee Willie Collum. He was given a four match ban for the incident, with one of the matches suspended until the end of the following season.
Following Hamill's release by Hearts after their relegation to the Scottish Championship, he joined Kilmarnock for a second time, signing a three-year contract with the East Ayrshire club on 2 June 2014. Hamill was released from his contract near the end of the 2015–16 season, having made his last first team appearance on 30 January 2016. Hamill then had a trial with English club Shrewsbury Town in April 2016.
Hamill signed for Scottish Championship club Queen of the South on 8 June 2016. In his second game for Queens, Hamill scored a winning goal against Stenhousemuir which earned qualification for the last 16 of the 2016–17 Scottish League Cup. Hamill's contract at the Doonhamers wasn't renewed during May 2017, so he was released after one season at the Dumfries club.
On 26 May 2017, Hamill signed for Stranraer.
Hamill made his Scotland U21 debut against Norway on 20 May 2008, going on to score his first international goal against Slovenia on 17 November 2007. On 5 February 2008 Hamill was sent off for a second bookable offence in a 2–1 defeat to Portugal. Hamill played for the Scotland U21 team on ten occasions during 2007 and 2008.As of 28 May 2017