The hosts got off to a flying start thanks to Rafael Carioca, who capped a fast counterattack to open the scoring after three minutes.
Spartak continued to dominate the early stages and nearly went further when Ari hit the woodwork in the 24th minute.
Benfica got back on level terms against the run of play when Lima headed home Eduardo Salvio's 32nd-minute corner. However, Jardel's unfortunate own goal just before half-time sent Spartak in 2-1 up at the break.
The Portuguese team came out a different team in the second half and pressed forward, but they could not breach the Spartak defence, which held firm to secure all three points.