Park ist der Sohn eines Architekten[1] und wurde an der Universität Soongsil in Seoul ausgebildet. 2008 begann er seine Profikarriere beim japanischen ZweitligistenMito Hollyhock. Zur Spielzeit 2009 wurde er vom ErstligistenKashima Antlers verpflichtet und wurde mit ihm japanischer Meister. 2010 wechselte er zum Ligakonkurrenten Júbilo Iwata, für den er 34 Ligaspiele bestritt und zu seinen ersten beiden Toren als Profifußballer kam.
Im Juni 2011 unterzeichnete Park einen Vierjahresvertrag beim SchweizerErstligistenFC Basel,[2] bei dem er als linker Außenverteidiger agierte. Mit dem Verein gewann er das Turnier um den Uhrencup. Sein Ligadebüt gab er am 20. August 2011 (6. Spieltag) bei der 1:3-Niederlage im Auswärtsspiel gegen den FC Luzern. Am Ende der Saison gewann Park mit der Mannschaft das Double, den Meistertitel und den Vereinspokal. Sein erstes Ligator (zugleich das erste in einem Pflichtspiel) erzielte er am 21. April 2013 (28. Spieltag) beim 2:2 im Auswärtsspiel gegen den FC Thun mit dem Treffer zum 1:0 in der 26. Minute.[3] Am Ende der Folgesaison verteidigte der FC Basel mit ihm die Meisterschaft;[4] das Finale um den Vereinspokal wurde gegen den Grasshopper Club Zürich mit 3:4 im Elfmeterschießen verloren.[5] In der Saison bestritt Park 49 Einsätze.
In der Sommerpause 2013 wechselte Park zum Bundesligisten 1. FSV Mainz 05, bei dem er einen bis zum 30. Juni 2015 gültigen Vertrag mit der Option auf zwei weitere Spielzeiten erhielt.[6] Am 11. August 2013 (1. Spieltag) absolvierte er beim 3:2-Sieg im Heimspiel gegen den VfB Stuttgart sein erstes Bundesligaspiel.[7] Sein erstes Bundesligator erzielte er am 1. Februar 2014 (19. Spieltag) beim 2:0-Sieg im Heimspiel gegen den SC Freiburg mit dem Treffer zum 1:0 in der 24. Minute. Am 29. April 2015 wurde sein Vertrag mit Mainz 05 bis Juni 2017 verlängert.[8]
Am 29. August 2015 wurde er von Borussia Dortmund unter Vertrag genommen.[9] Bei seinem Debüt, einem 2:1-Heimsieg gegen FK Krasnodar in der Europa League am 17. September 2015, bereitete er den Ausgleichstreffer durch Matthias Ginter vor und erzielte selbst den Siegtreffer per Kopf in der Nachspielzeit.
Ab der Saison 2017/18 steht Park nicht mehr im Profikader von Borussia Dortmund, sondern spielte in der zweiten Mannschaft.[10] Anfang Dezember 2017 wurde sein Vertrag beim BVB aufgelöst.[11]
Mitte Dezember 2017 wurde der vereinslose Park vom südkoreanischen Club Ulsan Hyundai unter Vertrag genommen.[12] Mit dem Verein aus Ulsan spielte er in der ersten Liga. 2019 und 2020 wurde er mit dem Klub Vizemeister. 2018 und 2020 stand er mit Ulsan im Finale des Korean FA Cup. 2018 verlor man das Endspiel gegen den Daegu FC, 2020 verlor man gegen die Jeonbuk Hyundai Motors. Am 19. Dezember 2020 stand er mit dem Verein im Endspiel der AFC Champions League. Hier besiegte man den iranischen Vertreter FC Persepolis mit 2:1. Nach 52 Erstligaspielen für Ulsan wechselte er Anfang 2021 zum Ligakonkurrenten Suwon FC nach Suwon.
↑Michael Schifferle: Saisonrückblick: Schweiz. Eufa, 2013, archiviert vom Original am 23. Oktober 2013; abgerufen am 10. Juni 2013.Info: Der Archivlink wurde automatisch eingesetzt und noch nicht geprüft. Bitte prüfe Original- und Archivlink gemäß Anleitung und entferne dann diesen Hinweis.@1@2Vorlage:Webachiv/IABot/de.uefa.com
Anmerkung: Bei diesem Artikel wird der Familienname vor den Vornamen der Person gesetzt. Dies ist die übliche Reihenfolge im Koreanischen. Park ist hier somit der Familienname, Joo-ho ist der Vorname.