The 35-year-old Shevchenko, who battled nagging injuries to claim his place in the starting line-up, twice headed the ball past Andreas Isaksson to cancel out Ibrahimovic's 52nd-minute strike.
Ukraine, taking part in their first European Championship, moved top of Group D with three points, ahead of France and England.
Sweden looked on course for a routine win after a slow start when Ibrahimovic, only standing out up to that point by virtue of his white and pink boots, put his team in front. Fielded in a free role as a playmaker, Ibrahimovic casually diverted a Kim Kallstrom pass into the net seven minutes into the second half.
Shevchenko, who netted 175 goals for Milan in seven seasons, hit back three minutes later for Ukraine with a diving header from an Anatoliy Yarmolenko cross as a packed Olympic Stadium burst into a huge roar.
"Sheva, Sheva!," chanted the crowd and they had not seen the last of their hero on an electric night. The striker doubled his tally in the 61st minute when he headed home from a corner at the near post after losing his marker Ibrahimovic. He was later substituted and left the pitch to a standing ovation before being named man of the match.
Surprisingly it was Ukraine who imposed a possessive pattern in the early stages and Shevchenko missed a fine chance when sent through by Yarmolenko, dragging his right-footed shot wide.
Sweden had the best chance of the first half, but Ibrahimovic was too laid back when his downward header bounced on to the far post just before the break and the miss was to proved costly, though substitute Johan Elmander missed a glorious chance to equalise in the last minute when he blazed the ball wildly over the crossbar.