The sea clash erupted after naval patrol vessels spotted the rebel ship at about 2 a.m. on Saturday some 70 nautical miles off the coast, said navy spokesman Cmdr. Mahesh Karunaratne.
He said when navy boats approached the suspicious ship, "it increased speed and tried to flee" while firing.
Navy boats retaliated and destroyed the ship in a battle that lasted about two hours, he said.
He said the 100-foot (30-meter) vessel was carrying arms and war materials for the rebels.
Four boats that came to the support of the ship were also destroyed, he said, adding at least 20-25 rebels were killed. The navy did not suffer casualties, he said.
The rebels could not be reached for comment.
The Tamil Tigers have a strong naval force and often ram boats packed with explosives into government naval ships in suicide attacks.
On Friday, air force jets pounded rebel bunker lines and other fortifications in the Kilinochchi district in the north, the military said in a statement. Helicopters also attacked a flotilla of boats belonging to the Sea Tigers, the rebel naval wing, that were gathered in a lagoon.
The government said last month that the fall of Kilinochchi - the rebels administrative capital
- was "imminent," but it remains in rebel hands despite a series of bloody battles in the area in recent weeks.
The Tamil Tigers have been fighting since 1983 to create an independent homeland for ethnic minority Tamils who suffered decades of marginalization by successive governments controlled by the Sinhalese majority. The conflict has killed more than 70,000 people.