Jeju United In 2007, Koo was selected by Jeju United in the
K League draft. He failed to make an impression in his first two years at Jeju due to numerous injuries. However, he slowly broke into the first team as a
defensive midfielder. In January 2010, Koo was reportedly invited by
Blackburn Rovers for a trial, but the move did not happen. That year, he spent a great season at Jeju instead, driving his club to an unprecedented runner-up finish. After the contribution, he received some individual awards from the league's federation, namely the
Top Assist Provider Award and the
FANtastic Player Award, as well as being selected for the
Best XI. On 12 February 2011, Koo made his Wolfsburg debut, coming on as a 64th-minute substitute in a 1–0 home defeat to
Hamburger SV. However, he had difficulty competing for a starting position with his teammates during a year.
Loan to FC Augsburg On 31 January 2012, he moved on loan to another Bundesliga club
FC Augsburg. On 18 February, he scored the equaliser outside the penalty area in a 4–1 defeat to
Bayer Leverkusen. On 17 March, Augsburg defeated
Mainz 05 2–1 after he equalised with a lob outside the penalty area. On 24 March, he provided an assist for the equaliser in a 1–1 draw with
Werder Bremen. On 31 March, he scored the opening goal with a low shot from outside the penalty area, contributing to a 2–1 win over
1. FC Köln. On 7 April, he scored the equaliser through
Manuel Neuer's
five-hole in a 2–1 defeat to
Bayern Munich. On 5 May, he scored the winning goal with a header in a 1–0 win over Hamburger SV. He became Augsburg's top goalscorer with five goals in 15 appearances despite playing for them for only half a season. He performed a significant part in helping Augsburg avoid relegation in their maiden Bundesliga season. In a
DFB-Pokal match on 18 December, Koo was involved in an altercation with Bayern Munich's midfielder
Franck Ribéry. After a disputed free kick, Koo confronted Ribéry and touched his face. Ribéry slapped Koo in response, and was sent off by referee
Thorsten Kinhöfer. Bayern Munich director
Karl-Heinz Rummenigge demanded that the ejection be overturned, while Bayern manager
Jupp Heynckes blamed both Koo and Ribéry, stating that although Koo had provoked Ribéry the latter should learn to not react under pressure. In his second season at Augsburg, Koo was plagued by injuries, but still helped his club survive relegation in the limited matches he played in.
Mainz 05 In the first half of the
2013–14 season, Koo returned to Wolfsburg, playing as a
central midfielder or
winger. However, he wanted more appearances, and preferred playing as an
attacking midfielder like when he played for Augsburg. On 18 January 2014, it was announced that he penned a four-and-a-half-year deal with Mainz 05. On 31 July 2014, Koo contributed to a 1–0 first-leg win by providing an assist in the third qualifying round of the
2014–15 UEFA Europa League against
Asteras Tripolis. In the second leg on 7 August, he scored his first Europa League goal, but Mainz 05 were eliminated from the tournament after losing 3–1 to Asteras. During the
2014–15 season, he was used as a winger again to replace
Eric Maxim Choupo-Moting and
Nicolai Müller, who left the club, having five goals and two assists in 23 league appearances.
Return to FC Augsburg On 31 August 2015, Koo rejoined Augsburg, and so Augsburg spent a season with three South Korean players, including
Ji Dong-won and
Hong Jeong-ho. On 12 September, he provided an assist for the opening goal with a backheel in a 2–1 defeat to Bayern Munich. On 23 September, he won a penalty against
Granit Xhaka, but it was insufficient to reverse the club's defeat to
Borussia Mönchengladbach. On 21 February 2016, he scored a solo goal after starting to sprint behind the half-way line in a 1–0 win over
Hannover 96. On 6 March, he became the first-ever player to score a Bundesliga hat-trick for Augsburg, giving them a 3–0 lead in a match against Bayer Leverkusen, which ended in a shocking 3–3 draw. He had eight goals and four assists during 29 appearances at the
2015–16 Bundesliga. He also participated at the
2015–16 UEFA Europa League, the first UEFA competition in Augsburg's history. They earned three wins and three losses in the group stage, succeeding in advancing to the knockout stage. Afterwards, they lost 1–0 on aggregate to
Liverpool in the round of 32. At the end of the
2015–16 season, he was evaluated as the league's fifth best attacking midfielder by
magazine kicker. On 3 February 2019, he achieved his 200th Bundesliga appearance against Mainz 05. He left Augsburg by turning down a contract extension with the club after the
2018–19 season. He wanted to contract with a higher-ranked club, but finally joined
Qatar Stars League side
Al-Gharafa in August 2019. ==International career==