Manchester City secured their passage to the last 16 of the Champions League on Wednesday with a 1-1 draw at Borussia Monchengladbach in a game where both teams were reduced to 10 men.
Not for the first time this season, City boss Pep Guardiola reverted to a 3-2-4-1 formation designed to take control of central areas, but it did not have the desired effect initially as Gladbach - without a win in the Bundesliga since September - took a deserved 23rd-minute lead through Raffael.
Ilkay Gundogan and Sergio Aguero came close to levelling for the Premier League side before captain Silva pounced from close range on the stroke of half-time, ultimately sealing the point that prolongs his team's interest in the competition.
This draw and Celtic's loss to Barcelona at Parkhead means Gladbach are guaranteed a Europa League spot in third and City cannot overhaul the LaLiga champions as group winners.
Matchweek six's dead rubbers therefore come in handy for Lars Stindl and Fernandinho, who were each dismissed after the break for two bookable offences by the occasionally over-zealous Turkish referee Cuneyt Cakir.
Raffael and Fabian Johnson combined for the USA international to test Claudio Bravo in the seventh minute and Andre Schubert's team were increasingly encouraged by a disjointed City showing before taking the lead midway through the first half.
Stindl outmuscled John Stones to find space down the left and his low cross was deflected into Raffael's path off Aleksandar Kolarov for the Brazilian to finish emphatically.
Former Borussia Dortmund star Gundogan almost pulled City level on his return to Germany, controlling a Kevin De Bruyne corner on the edge of the area to spear a shot towards the bottom-left corner that drew a superb save from Yann Sommer.
Bravo spared his own blushes by denying Oscar Wendt after a dreadful throw out allowed the Gladbach man to bustle through a disorganised backline.
A pleasing half for Schubert turned sour towards its conclusion when Ibrahima Traore limped off with an apparent groin strain and City belatedly sprung into life to equalise.
Sommer thwarted Aguero from a Sterling cutback before De Bruyne found joy down the same right channel and Silva prodded home.
The start to the second period was similarly eventful as Sterling had a goal ruled out for offside and, from Sommer's resulting punt downfield, Stindl struck Nicolas Otamendi in the face to earn his marching orders.
City's numerical advantage lasted only 12 minutes as Fernandinho, who had walked a disciplinary tightrope all evening, also drew a second booking from Cakir for a slight tug on Tobias Strobl's shirt.
The home support found their voice again, although they were relieved to see Sommer had not misplaced his reactions when he pushed a De Bruyne drive behind at full stretch.
Gladbach failed to press convincingly for the win they needed as Otamendi powered a header wide, although the sight of Aguero limping during stoppage time could be a concern for Guardiola ahead of Saturday's Premier League trip to Burnley.
Recap match highlight here: