Born in Cork, O'Connor joined the academy setup at Blackburn Rovers 2008, having previously played for Kilreen Celtic and Nu Farm. In the summer of 2010, O'Connor signed his first professional contract. In the summer of 2012, O'Connor signed a one-year contract extension with Blackburn Rovers, and, after a successful loan spell at Burton Albion, Blackburn Rovers manager Steve Kean rewarded O'Connor with a new, improved -year extension, which would see him Stay at Blackburn until the summer of 2015. Ahead of the 2013–14 season, O'Connor was given number 28 shirt at the club.
Loan spells
On 15 August 2012, he joined Football League Two side Burton Albion on an initial one-month loan. His professional debut for Burton came on 18 August 2012, in a 3–0 defeat to Rotherham United at the New York Stadium. On 11 September 2013, O'Connor's loan spell at Burton was extended January 2013. During that time, he became a regular at the Pirelli Stadium and his loan spell was again extended, this time until the end of the season. In his time at Burton Albion Gary Rowett said O'Connor was good enough to play in the championship for Blackburn but needed to be given the opportunity. In total, O'Connor made 53 appearances in all competitions for the club during the 2012–13 season, reaching the playoff semifinal, where they would eventually lose out to Bradford City 5–4 over two legs. Burton Albion made their attempts to sign O'Connor for the second time ahead of the season, but this was proven to be unsuccessful. On 1 October 2013, O'Connor joined League Two side Torquay United on a one-month loan deal. On 29 October 2013, O'Connor extended his loan at Torquay by a further month, keeping him at Plainmoor until 30 November 2013.Alan Knill went on to praise the 21 year old for his performances saying"if there is a better young defender in the league, I haven't seen him". Two days after his loan had expired, Torquay decided to extend his stay once again by a further month, thus keeping him at the club until the end of December 2013. Shortly after extending his loan spell, O'Connor was named as the club's Player of the Month for November. Throughout the season O'Connor was unable to help the club survive relegation to Football Conference, as he made thirty one appearance for the club and despite this, O'Connor was named 2013–14 Young Player of the Season.
Plymouth Argyle
Despite his aim to make a breakthrough for Blackburn Rovers in the 2014–15 season, O'Connor joined Plymouth Argyle on loan until 10 January 2015. On 16 August 2014 O'Connor made his Plymouth debut, playing as defensive midfielder, in a 3–0 win over rivals, Exeter City. Between August and February, O'Connor "operated in a holding role in front of the defence" and played "either in a midfield holding role or as a centre-back" which led Manager John Sheridan to praise his performances labelling O'Connor his most important player. On 2 February 2015, O'Connor signed for Plymouth Argyle, with Plymouth taking over Blackburn's existing contract for the defender, which was set to expire at the end of the season. John Sheridan admitted that his side missed O'Connor because of the high standards he sets. A vastly successful spell followed, which saw the League Two side rocket up to 4th in the table. O'Connor's first game after signing for the club on a permanent basis came five days later, in a 1–0 win over Accrington Stanley. O'Connor scored his first Plymouth goal on 7 March 2015, in a 2–0 win over Northampton Town; however, O'Connor suffered a groin injury that kept him out for a month. O'Connor made his return to the first team against Mansfield Town on 11 April 2015, which he scored in a 2–1 win, followed up by scoring another goal, in a 1–1 draw against AFC Wimbledon on 14 April 2015. They would go on to reach the playoffs, where they would eventually lose out to Wycombe Wanderers 5–3 over two legs in the semifinal.
Burton Albion
On 18 July 2015, O'Connor signed a two-year deal with Burton Albion after turning down a contract offer from Plymouth Argyle returning to the club where he had spent the 2012–13 season on loan. A successful season was to follow as O'Connor helped his side win promotion to the championship for the first time in their history.
Aberdeen
On 25 June 2016, O'Connor signed a deal with Aberdeen, subject to International clearance. On 7 July 2016, he made his debut in the second leg of the Europa League First qualifying round tie against Fola Esch. O'Connor became a regular in the side very quickly and his manager Derek McInnes labelled him'obsessed' and his obsession could make him a star. On 4 November 2016, he scored his first goal for the club in a 2–1 win away to Partick Thistle. O'Connor finished the 2016/2017 season with 3 goals, got to the Scottish league cup and Scottish cup final and helped his side to a 2nd-place finish behind Celtic. O'Connor began the 2017/2018 season in really good form playing in the europa league qualifiers, which his side would eventually go out to Apollol Limassol in the 3rd round. O'Connor played a key role in the heart of the defence and sometimes operating in midfield playing every game of the 17/18 season, helping his side to another 2nd-place finish behind Celtic. Despite Aberdeen trying to tie O'Connor down to a long-term deal, he decided he wanted to return to England.
Bradford City
He signed a three-year contract with Bradford City in June 2018. He was made club captain by October 2018. He was replaced as captain by Paul Caddis in February 2019. Despite being relegated O'Connor put in a number of impressive performances finishing the season with 6 goals.