Johan Koch spielte zunächst beim dänischen Klub GOG Svendborg TGI, u. a. 2009 in der EHF Champions League und 2010 im EHF-Pokal. 2010 ging er zum schwedischen Erstligisten IFK Kristianstad. Zur Saison 2013/14 wechselte der 1,90 Meter große und 110 kg schwere Kreisläufer zum deutschen BundesligaaufsteigerTV Emsdetten, wo er einen Zweijahresvertrag unterschrieb.[1] Ab dem Sommer 2015 spielte Koch in der Schweiz für die Kadetten Schaffhausen. Mit Schaffhausen gewann er 2016 und 2017 die Meisterschaft sowie 2016 den SHV-Cup. Im Januar 2018 wechselte er zum deutschen Bundesligisten Füchse Berlin.[2] Mit den Füchsen Berlin gewann er 2018 den EHF-Pokal. Im März 2022 zog sich Koch eine Schulterverletzung zu.[3] Zur Saison 2022/23 wechselte er zum Schweizer Verein HC Kriens-Luzern.[4] Da Koch aufgrund der Folgen seiner Schulterverletzung seine Karriere nicht fortsetzen konnte, wurde sein Vertrag im Oktober 2022 aufgelöst.[3]