Schweinsteiger unleashed a trademark long-range shot into the far corner of the net in the 19th minute as Bayern collected their ninth point of the campaign.
But the German international turned from hero to villain just two minutes after the break when he received his marching orders after picking up a second yellow card.
Bayern captain and former international goalkeeper Oliver Kahn stood up after the red card, parrying several dangerous balls from the hosts.
Brazilian defender Polga almost equalized for Porto but his finish sailed past Kahn only to hit the post.
The German double winners are now on top of Group B with nine points, leaving the losers in second place five points adrift of them.
In Italy, Inter Milan edged visitors Spartak Moscow 2-1 to revive their chances in the tournament.
Inter looked on their way to a huge victory when they went two up after just nine minutes thanks to a brace from Julio Cruz.
Cruz hammered a first-minute finish into the roof of the net after Luis Figo's free-kick was deflected off Patrick Vieira.
The Argentinean international doubled the lead eight minutes later when he headed home an inch-perfect cross from Alvaro Recoba.
Nine minutes into the second period, Spartak narrowed the gap when Denis Boyarintsev squared for Roman Pavlyuchenko who converted into an empty net.
Inter became third with three points while Spartak are rooted with only one point.