A lacklustre showing from the world champions, who had laboured to a narrow 2-1 win over Scotland in their Group D opener, allowed Poland to clinch the points, as Joachim Low's men were beaten in competitive action for the first time in 19 outings.
Having failed to threaten with any regularity during Saturday's first half, Germany fell behind to Poland's first effort on target early in the second period when Milik headed home from inside the area.
The Ajax man, on loan from Bundesliga side Bayer Leverkusen, was later withdrawn to a rapturous ovation from the home crowd and, despite some tense moments for the hosts at the Stadion Narodowy, his replacement, Mila, wrapped up the win with two minutes left.
Seeking to extend a competitive unbeaten run that had stretched back to Euro 2012, Germany threw caution to the wind late on.
However, it was to no avail as Poland picked up their first victory over Germany since unification to move top of the group, leaving Low with work to do in finessing his relatively new-look side.
Thomas Muller had the first attempt of the game, when his shot from distance was kept out by Wojciech Szczesny after 11 minutes of a fairly low-key opening.
Muller's Bayern Munich team-mate Robert Lewandowski then saw his half-hearted penalty appeals waved away after a tangle with Germany defender Antonio Rudiger.
Mats Hummels got his head on Toni Kroos' free-kick after 22 minutes but saw his effort blocked and, with both sides careless in possession, neither was able to get on top.
Lewandowski appeared to be offside when he threatened Manuel Neuer's goal following a curled Kamil Grosicki free-kick.
With Germany ending the first half stronger, Karim Bellarabi had two opportunities to open the scoring and ensure a debut goal.
First, he sidefooted Rudiger's cross wide of the target, before the Bayer Leverkusen man cut inside his marker when through on goal, only to fire a tame effort at Szczesny.
While Germany ended the first half in control, they started the second slowly and were made to pay after 51 minutes when an unmarked Milik glanced Lukasz Piszczek's cross past Neuer - with the Bayern goalkeeper failing to make contact with the ball as he came to clear.
That provoked a reaction from Low's men, with Andre Schurrle and Erik Durm both forcing saves from Szczesny shortly after the hour mark.
Poland-born Lukas Podolski, introduced off the bench, crashed a late strike off the crossbar, but it was a Poland substitute who ultimately put the result beyond doubt.
Lewandowski selflessly played in Mila, who was free in the centre after a quick break, and the Slask Wroclaw man finished well to spark jubilant Polish scenes both on the touchline and in the stands.
Thank you for reading 5 articles this month* Join now for unlimited access
Enjoy your first month for just £1 / $1 / €1
*Read 5 free articles per month without a subscription
Join now for unlimited access
Try first month for just £1 / $1 / €1