Cardozo tapped home an Andre Almeida assist the hour as Bayer conceded at home in Europe for the first time this season.
Victory extends Benfica's unbeaten run to 23 games in all competitions although the Portuguese, who dropped out of the Champions League, had to work hard to maintain that run on Thursday night.
Benfica goalkeeper Artur Moraes was busy early as he kept out a 20-yard tester from Andre Schurrle before holding on to Simon Rolfes' header.
Almeida responded at the other end by drilling a 20-yard shot over the crossbar.
Bayer looked the more likely to open the scoring, however, as Kiessling fired a shot wide from just outside the area.
Benfica were forced into a change on 42 minutes as Enzo Perez replaced Andre Gomes but there was still time for Schurrle to go close again.
Bayer had the opening shot of the second period when Rolfes' left-foot volley went over the crossbar.
The hosts failure to test Moraes enough was exposed on 61 minutes as Cardozo swooped for the decider.
Almeida found enough space on the right side of the area to slide in a pass that Cardozo put away from the middle of the six-yard box.
Bayer pot straight back on the front foot with Kiessling winning a free-kick in a dangerous position after drawing Luisao into a foul.
But they continue to frustrate the home fans as Jens Hegeler headed over Gonzalo Castro's inswinger before Lars Bender volleyed wide of the left-hand post.
Hegeler tried a more direct approach when he blasted a 20-yard free-kick only for Moraes to punch away as Benfica held on.