Poland was already relegated from Group 3 but, after Andre Silva scored his second goal in four games to give Portugal a first-half lead, Milik's equaliser ensured Jerzy Brzeczek's side a share of the points and a place in Euro 2020 qualifying draw pot 1 at the expense of Germany.
Portugal, which clinched a place in the Nations League finals with a goalless draw against Italy on Sunday (AEDT), put in an improved display but Poland's physical approach to the game helped it muscle its way back into the contest after the break.
Danilo Pereira felled Milik in the box in the 62nd minute and was shown a red card, with the striker scoring from the spot on two occasions, his initial attempt having been ruled out due to encroachment.
Renato Sanches was Portugal's most dangerous attacking outlet and it was his corner that was converted by Silva, whose flicked effort caught Wojciech Szczesny out to reach the net.
Poland almost hit back within minutes when Tomasz Kedziora crashed a looping header onto the crossbar, but Portugal led at the break.
The second half was played at a faster pace and swung from end to end before Poland found a response just after the hour mark.
Danilo reached his arm across Milik's back as the Napoli forward bore down on goal and referee Sergey Karasev had no hesitation in sending off the Porto player, though the hosts held out for a draw after conceding from the spot.