Koval is a product of Metalurh Zaporizhya Youthschool system. He first appeared on the bench for the first team on 26 July 2009. He was there for just 5 games before he was given his chance. Mainly due to the number of absentees, he appeared in goal for Round 12 of the Ukrainian Premier League on 1 November; He kept a clean sheet in a 3–0 win. After a fine performance, he kept his place for the next two games, keeping two more clean sheets in the process. Even when he did concede, it was only a single goal in a 1–1 draw with Dynamo Kyiv, a game in which he also saved a 94th minute penalty kick from Artem Milevskiy, saving the point. Metalurg's form rose, and he kept his place from then on. A 0–4 drubbing by Metalist was the only real blip on his seasons performance. He ended with 6 clean sheets and having only conceded 23 in 19 games.
Dynamo Kyiv
2010–11
After a fine debut season, starting whilst he was aged just 16, Dynamo Kyiv showed interest. This was intensified after a superb performance against them during the season. He signed for them just 3 games into the 2010–11 season. He made his debut for Dynamo in a UEFA Champions League play-off game against AFC Ajax, and with an impressive performance subsequently established himself as the first-choice goalkeeper with his new club in the absence of the injured Oleksandr Shovkovskiy, at the age of only 17. When Shovkovskiy returned from injury in the second half of the 2010–2011 season, Koval was moved to the back-up goalkeeper position. In November 2010, Koval was named by Spanish football magazine, Don Balón as one of the 100 best young players in the world alongside David de Gea, who had recently moved to Manchester United.
2011–12
He was very much a substitute goalkeeper throughout the 2011–2012 season, making just 5 appearances up until mid-late April. He kept clean sheets in 4 of them, and conceded 1 in a 6–1 thrashing of FC Zorya Luhansk in October. However, at the end of April, he got a breakthrough, and due to injury to Oleksandr Shovkovskiy he played in the final 3 matches. Coming on initially as a halftime substitute away at Volyn Lutsk, he kept a 5th clean sheet of the season. Next up was Zorya Luhansk again, an though there was not to be a thrashing on this occasion, Koval kept a 6th clean sheet in 7 appearances, and Dynamo drew 0–0. His final chance to impress was against Tavriya Simferopol on 10 May. The game started well with Dynamo taking the lead, only for Koval to rush from his line as the opposing player made a dash forward, and foul him just outside the box with a poor tackle. He was sent off for preventing a clear goal scoring opportunity. In the 2011–12 season, he also made a single appearance in Ukrainian Cup and Europa League.
2012–13
For the upcoming 2012–2013 season, it is widely thought that he will become the first choice keeper. As of 22 August 2012, he has started in all 7 of Dynamo Kyiv's opening games. In the 4 league games he has conceded 2 goals in 4 games, keeping 2 clean sheets. In the champions league he conceded 1 in a 2–1 home win over Feyenoord, and kept a clean sheet in the surprise 1–0 away win. He then went on to concede just once and make a string of saves in a shock 3–1 away win over Borussia Mönchengladbach.
On 6 August 2014, Koval was loaned out to Hoverla Uzhhorod until the end of 2014. On 3 March 2015, after participating in Dynamo's winter training camp, it was announced that Koval will return to Hoverla until the end of the season.
On 20 January 2018, Koval joined Spanish La Liga side Deportivo La Coruña on loan for the remainder of the season, in a deal that included a buyout option.