Rafael Carioca rounded off a slick break with a classy finish to give the hosts a third-minute lead and, although Rodrigo Lima headed Benfica level at the Luzhniki Stadium, a Jardel own goal restored Spartak's lead before half-time.
It was all Benfica in the final half-hour but Lima and Eduardo Salvio wasted good chances to equalise.
Diniyar Bilyaletdinov and Jose Manuel Jurado were involved in the build-up to the early goal before Rafael Carioca steered the ball inside the far post with the outside of his right foot.
Rodrigo Moreno went close at the other end but his 20-yard drive was turned over the bar by goalkeeper Artem Rebrov, making his European debut.
Spartak should have doubled their lead when Ari, who had already headed wide when well placed, poked against the crossbar from close range.
Kim Kallstrom shot wide for Spartak before blocking Bruno Cesar's effort at the other end, and Rebrov then saved from Nemanja Matic.
But Benfica levelled in the 33rd minute when Lima was left in far too much space at the near post to head in Salvio's cross.
Spartak threatened a stunning second goal when Rafael Carioca backheeled the ball in the air to Zhano Ananidze, but he could not connect properly with his leaping left-foot volley and Jurado also sliced wide.
Benfica keeper Artur Moraes saved from Dmitri Kombarov and Nico Pareja but more fluent passing from Spartak ended with Jardel turning Yevgeni Makeev's cross into his own goal two minutes before half-time.
Ari went close again early in the second half when he dragged the lively Ananidze's low cross behind him towards goal, but he could get no power on the improvised effort and Artur saved comfortably.
Lima was denied by blocks from Rafael Carioca and Marek Suchy and Salvio should have drawn the Portuguese side level when he ran on to Makeev's weak headed back-pass but shot wide.
Pareja prevented Lima getting a shot away after the forward cut in on to his right foot.
Kombarov tracked back just in time to break up another attack and Makeev cleared superbly with Salvio closing in as Spartak held on.