On 20 February 2011, João Paulo joined South Korean K-League side Gwangju FC on loan from ABC, but signed a permanent deal five months later in July. Following Daejeon Citizen's relegation to the K League Challenge, he joined Incheon United in January 2014.
On June 16, 2016 João Paulo joined Bulgarian club Botev Plovdiv, and was presented to the public alongside two fellow new Brazilian signings. On June 29, he scored his unofficial first goal for the club, in a 5–0 thrashing over FC Oborishte in a pre-season friendly. On August 15, 2016, João Paulo scored a goal for the 3–2 win over Slavia Sofia. On August 27, he also scored the winning goal in a 2–1 home victory over Neftochimic Burgas. João Paulo scored a hat-trick for the 4–0 win over FC Lokomotiv Gorna Oryahovitsa on 17 September. Four days later, on 21 September, he scored twice for the 3–6 away win over FC Pirin Gotse Delchev for the Bulgarian Cup. At the end of the same week he scored another goal for the 1–2 away win over Dunav Ruse. On 16 October João Paulo continued his goalscoring streak during the tremendous 3–4 away win over Beroe Stara Zagora in the regional Thracian Derby. He scored a goal during the 3–0 win over PFC Neftochimic Burgas on 27 October. Three days later, during the 1–1 draw with Levski Sofia he scored a goal in the 13th second following an excellent assist from Todor Nedelev. João Paulo scored again on 3 November during the 1–3 away defeat to PFC Montana.
On January 6, 2017, after several weeks of negotiations, Paulo joined Bulgarian champions Ludogorets Razgrad at a reported transfer fee of € 150,000.
Return to Botev Plovdiv
On 27 February 2018 João Paulo returned to Botev Plovdiv on a loan until the end of the season. On 12 March, on day when Botev Plovdiv celebrated 106 years from its foundation, João Paulo scored a goal for the dramatic 2–4 away win over FC Vereya. On 21 April João Paulo scored a goal during the 2–2 draw with FC Vereya. On 29 April João Paulo scored a goal for the 2–1 home win over CSKA Sofia. A week later, on 5 May, he scored again but this time Botev Plovdiv was dramatically defeated with 3–2 by Levski Sofia. On 11 May, João Paulo scored twice for the 2–1 win over Beroe Stara Zagora and received the award for man of the match.