In the 100th Bundesliga meeting between these sides, the Green-Whites rang the changes up front and enjoyed the better of a scrappy first half.
Davie Selke and former Everton midfielder Davy Klaassen were denied by good saves from Kevin Trapp and they also had a penalty appeal which was rejected by VAR.
The Eagles, who started with Silva over Bas Dost, looked toothless in the first period but vastly improved after the break.
Dominik Kohr had a goal disallowed for off-side but they took the lead two minutes later when Filip Kostic's pinpoint cross was headed in by the in-form Silva, on loan from AC Milan.
Despite Bremen making a flurry of attacking substitutions, the visitors sealed victory when an unmarked Ilsanker scored with his first touch just a few seconds after coming on, tapping in from a corner.
And the Austrian midfielder was on the scoresheet again with a header from close-range following Jonathan de Guzman's free-kick in the 90th minute.
The result means Frankfurt climb to 11th in the table while Bremen remain one place off the bottom with five games remaining.
Werder Bremen - Eintracht Frankfurt
Image credit: Imago
Bremen got their team selection wrong: Florian Kohfeldt's side had been in good form in the lead-up to this crunch game but benched Leonardo Bittencourt, who scored the winning goal against Schalke against the weekend which was his second in three games.
Their top scorer Milot Rashica, who picked up a knock in the second half against Schalke, was fit enough to only be on the bench. Both Bittencourt and Rashica were only brought on after Frankfurt were 1-0 up. Bremen ran out of ideas in the final third in the second half and the pair did not have enough time to influence the game.
MAN OF THE MATCH
Filip Kostic (Frankfurt): In a game of little quality the left winger was a threat throughout the 90 minutes with his crosses and directness. And he set up the opening goal for Silva with a pinpoint delivery.