Vizing showed that it suffices to color the edges of a simple graph using \(\Delta + 1\) colors, where \(\Delta\) is the maximum degree of the graph. However, up to this date, no efficient distributed edge-coloring algorithms are known for obtaining such a coloring, even for constant degree graphs. The current algorithms that get closest to this number of colors are the randomized \((\Delta + \tilde{\Theta}(\sqrt{\Delta}))\)-edge-coloring algorithm that runs in \(\text{polylog}(n)\) rounds by Chang et al. (SODA '18) and the deterministic \((\Delta + \text{polylog}(n))\)-edge-coloring algorithm that runs in \(\text{poly}(\Delta, \log n)\) rounds by Ghaffari et al. (STOC '18). We present two distributed edge-coloring algorithms that run in \(\text{poly}(\Delta,\log n)\) rounds. The first algorithm, with randomization, uses only \(\Delta+2\) colors. The second algorithm is a deterministic algorithm that uses \(\Delta+ O(\log n/ \log \log n)\) colors. Our approach is to reduce the distributed edge-coloring problem into an online, restricted version of balls-into-bins problem. If \(\ell\) is the maximum load of the bins, our algorithm uses \(\Delta + 2\ell - 1\) colors. We show how to achieve \(\ell = 1\) with randomization and \(\ell = O(\log n / \log \log n)\) without randomization.