The 100-metre ship was carrying mostly aluminium when it incorrectly navigated the Krongrundet shallows.
The coast guard in Kalmar on Swedish mainland received the alarm at 3.10am.
The ship was immediately evacuated of six of its nine crew members.
At 6am the captain and two crew members were still aboard the ship, reported news agency TT.
Despite a flooded machine room the ship has stayed afloat.
The coast guard remains on the scene to monitor any potential spill.
“The hull is intact, but the water inside is pressing on the oil on board, and there is a big risk that it will leak,” coast guard spokesperson Christer Ekeroth told the Dagens Nyheter (DN) newspaper.
The ship is carrying about 100 cubic metres of oil.