I use a citrus based solvent degreaser that I get from work, gently brush it on the chain with an old paint brush, being careful not to let it get into the hub or bb, let it soak in then get two scrubbing brushes and ‘sandwich’ the chain while turning the cranks, both top and bottom, then side to side. Comes up like new!
Then carry out a wash as normal, dry thoroughly with a lint free rag and apply fresh lube. Periodically I take off the cassette, apply degreaser and give that a good scrub down with a brush, again being careful not to get any into the hub, then go between the gaps in the sprockets with the edge of a cleaning cloth to get the gunk out. Then I clean and dry thoroughly- jobs a good un!
The degreaser I use isn’t the most eco friendly, but it’s extremely effective (I use it to clean high voltage cables when prepping them for jointing) and we have a facility at work for disposing of it responsibly.