All good advice (above). One other thing that can be a problem is stacking Leningrad w/inf. Yeah you need to try and hold it, but those inf (in Leningrad) will be late to the party in Moscow (if the Germans punch straight through w/o being delayed). Plus the southern route is worth more w/oil bonuses and has the Ukraine IC. The Germans can also build minors on Russian soil in the south (w/2 IPC tt’s). If you are going to lose a minor IC, balance out between defending it, and the counter attack to recover it. Its ok to lose a minor IC, as long as they can’t use it for a few rounds (it’s all about delaying them as long as possible, until help arrives). Sometimes it’s better to trade an IC, then lose all you have in the area.
Italian can-opener can be a real problem (as noted). If the Italians open up tt’s, it also allows the Germans to land air to def their stack against hit & run counter attacks. Depending on what the Italians have, you may want to leave more then 1-2 inf as blockers (don’t over do it) so the deeper the Italians get, the fewer ground units they will have (killed along the way).
A few ftrs (maybe a tac or two) is good advise. As noted it keeps tanks off the front lines, and you’ll need the ftrs for the end game. I also like to have a few mech/tanks for mobility in case they break-through, and I need to chase them down. A German tank blitzing to the far east is a killer, if they break-through at Leningrad, or amphib behind you from sz 127.
Keep an eye on those sneaky Japs, and get your allies involved. You can’t defend against a concentrated German Barbarossa, and the Japs hitting you from behind. At least get help dealing w/Japs, and a few allied ftrs to def your strong holds. That 5 IPC NO for no help is rarely achieved anyway, and chances are you will be facing all the axis powers at some point.