Artem Fedetskiy's early goal and Matheus' header shortly before half-time gave the hosts a comfortable interval lead.
It was extended by Victor Giuliano before Napoli substitute Edinson Cavani netted a consolation goal from the penalty spot.
It took little more than a minute for Dnipro to take the lead, Fedetskiy turning in Yevhen Seleznyov's free-kick after Andrea Dossena fouled Fedetskiy.
Napoli surged forward seeking an equaliser but Lorenzo Insigne shot over, Camilo Zuniga could not connect properly with an overhead kick and Jan Lastuvka saved from Blerim Dzemaili.
A sequence of two corners for Napoli and three for Dnipro in little over two minutes did not yield a goal, and Seleznyov then volleyed another set-piece from Ruslan Rotan over.
Rotan curled a free-kick over before Dnipro lost Roman Zozulya to injury, Jaba Kankava taking his place.
A bad foul from Marco Donadel saw yellow cards for both him and Dzemaili, for his reaction.
The second goal arrived three minutes before the interval when Seleznyov nodded the ball across the box for Matheus to head home.
Napoli boss Walter Mazzarri dipped into his strong selection of substitutes seven minutes into the second half, introducing Cavani and Goran Pandev in place of Dossena and Eduardo Vargas.
The Uruguayan was quick to warm Lastuvka's hands with a 20-yard effort but Dnipro continued to press and Nikola Kalinic hit a post from six yards out.
It was 3-0 in the 64th minute though, when Victor Giuliano netted from similar range.
Lastuvka blocked Alessandro Gamberini's shot before Napoli pulled a goal back, Cavani winning and converting a 75th-minute penalty.
It did not spark a comeback, though, with only a Cavani free-kick which curled wide offering any threat of a second goal.