But I'm not sure if I should but one that works off-camera or as a TTL flash.
Any flash can be used off camera with the right equipment. For taking photos of fish in an aquarium (or even fish on ice at your local fishmonger), a simple TTL cable is all you really need in addition to the flash itself.
However with pop-up and no lamp, I can actually get a better representation of the colors. I assume the table lamp washes out their colors in general.
At least some of the color in fish, and all the iridescence, is due to structure rather than pigment. If you look at an individual fish scale in certain light, it just looks clear, but under the right light at the right angle, you get colors.
I think the reason the table lamp gives you poor results is that the light is too soft -- it's probably filtered through a lampshade, and it also sends light in all directions and gets reflected back by other surfaces in the room. Instead, you want very directional light, also known as hard light. When all the light comes from one direction, it all interacts with the fish in the same way, creating a lot of the same color. When the light comes from many different directions, any colors that are produced will mix with other colors produced from light at other angles.
The pop-up flash worked better because it's a much harder, more directional light. Using an off-camera flash will give you the same kind of directionality, but it will let you try lots of different angles to get the one that works best for you. It also gets the flash away from the lens, letting you create some shadows that will add definition and depth to your subject.
If you're shooting fish in a tank with lighting, you may run into cases where the light reflects off the front of the tank and causes glare. There are a few options to mitigate that:
lens hood: If your hood is flat across the front (i.e. it's not a tulip-style hood) you can put the front of the hood right up against the glass, and that should eliminate glare from any lights.
snoot: Like a hood that goes on your flash, a snoot limits the angle at which light can exit the flash, preventing reflections that are visible to the camera.
cardboard: Just a simple piece of cardboard can be used to block reflections from the camera. Get a helper to hold the edge of the cardboard vertically against the front of the tank between the flash and the camera. Any light reaching the camera from the flash will then have to bounce off objects in the tank.