Fillet fish; set aside. Wrap bones securely in cheese cloth; place in an 8 1/2-quart stock pot. Add sliced onion, celery, carrots, 1 tablespoon salt, sugar, and water. Bring to a boil; cover and simmer 30 minutes. Strain liquid; discard vegetables and bones. Allow liquid to return to a simmer.
Grind fish; combine fish, eggs, chopped celery, onion, carrot, matzo meal, remaining salt, and pepper in a large mixing bowl; mix well. Shape fish mixture into oblong patties using 1/2 cup mixture per patty. Drop patties into simmering liquid; cover and cook over low heat 3 hours. Let gefilte fish cool completely in cooking liquid; chill thoroughly. Serve with red horseradish, and garnish with carrot strips and parsley, if desired.