Sweden opened the scoring through Zlatan Ibrahimovic in the 53rd minute, but their lead was short-lived as Shevchenko sprang into action.
The Dynamo Kiev striker found the back of the net twice in seven minutes with headers to place the tournament debutants at the summit of Group D.
England, who drew 1-1 with France earlier on Monday, will have taken comfort from Sweden’s unconvincing display ahead of their meeting on Friday.
There was little on show to concern Roy Hodgson’s side, who will also have been encouraged by the vulnerability of the Ukrainians.
The first moment of real danger arrived in the 17th minute when Ibrahimovic floated in a superb cross that prompted the swift intervention of keeper Andriy Pyatov.
In the 23rd minute it was Sweden’s turn to panic when Andriy Yarmolenko sent Shevchenko racing in on goal.
Even though he was shooting from a tight angle, Shevchenko should have done better with the chance but failed to connect cleanly with a shot that bobbled across the face of goal.
Andriy Voronin almost made contact with a long ball into the box as the Ukrainians, whose squad was struck by a bug last week, continued to press.
Sweden forced a save from Pyatov following Markus Rosenberg’s turn and shot and a mazy run from Ibrahimovic ended when he was dispossessed by Oleg Gusev.
Keeper Andreas Isaksson kept out Andriy Yarmolenko as Ukraine went on the offensive, but moments later Sweden should have taken the lead.
Sebastian Larsson teed up Ibrahimovic with a wonderful cross but the unmarked AC Milan striker headed a glorious opportunity against the right post.
Ibrahimovic would not be denied in the 53rd minute, however, when he became the beneficiary of some poor defending from the hosts.
Kim Kallstrom nudged another fine cross from Larsson into the path of Ibrahimovic and the towering marksman made no mistake with the simple tap-in.
But three minutes later Ukraine were level, a fine diving header bringing Shevchenko his 47th international goal after Yarmolenko had made the initial inroads.
And in the 62nd minute Ukraine took the lead, with Shevchenko on target once more.
Gusev whipped in a corner to the near post that was met by the veteran former Chelsea striker, who took advantage of a static Ibrahimovic to nod home.
Pyatov looked far from convincing as he floundered to keep out a volley and follow-up header from Ibrahimovic.
Sweden substitute Johan Elmander should have rescued a late point but he blazed a one-on-one with the keeper over the crossbar and moments later defender Olof Mellberg, thrown forward in desperation, followed suit.