The Nerazzurri needed a win to keep their top-three chances alive, but the defeat leaves them trailing Roma by seven points with only two games of the season remaining.
The match was just eight minutes old when Klose opened the scoring, playing a one-two with Senad Lulic to race through on goal before delaying his finish and coolly scooping the ball over the keeper from close range.
It was the 37-year-old's fifth goal in his last six games for the club, continuing what is expected to be the farewell tour of his career with reports suggesting that the German will retire at the end of the season.
Inter looked for an equaliser and almost got it shortly before the half-hour mark when Stevan Jovetic latched on to a cross into the box, but his effort was too central and Federico Marchetti was able to make the save.
Clear chances were few and far between for either side, though, and it wasn't until seven minutes from time that either were able to create another golden opportunity.
It was one that Lazio took to wrap up the game too, with Jeison Murillo being penalised for a foul on Balde Keita inside the area that also earned the Colombian a second yellow card, forcing the visitors to see out the game with just 10 men.
Candreva took on the penalty duties and converted in emphatic fashion, firing his spot kick into the top corner to leave Samir Handanovic no chance.
There was no way back for Inter after that as their poor away form continued, with Roberto Mancini's side having picked up just one win in their last nine matches on the road now.
Lazio, meanwhile, return to winning ways after back-to-back defeats and have now won consecutive home league games for the first time since October to climb up to eighth in the table.