For marinade: Mix soy sauce, oil, lime juice, onion and garlic together. Place fish in marinade for 15 minutes.
Cut four 10-inch-square pieces of aluminum foil. Remove fish from marinade, saving liquid. Place each portion of fish on a piece of aluminum foil and spoon any remaining marinade over fish. Place a sprig of cilantro on each piece. Bring the edges together, seal each packet and place on the grill or a baking tray in the oven. For a 1-inch fillet, cook for 10 minutes, or until opaque.
Turn fish packet over once or twice during the cooking. Check fish by opening the foil and sticking the point of a knife into the flesh. Place a packet on each plate and let the guests open their own, or remove fish from the packet and serve on individual plates.
For salsa: Mix all ingredients together. Taste for seasoning and add more sugar, cumin, salt or pepper as needed. Place in a serving dish and serve with fish.