You could try using some of her own methods against her.
She, for example, brings round sandwiches, so you'll have to do what she says.
So, have lunch or dinner already prepared, so that you can just say, "Oh, I've already made lunch." Cooking a second lunch may seem redundant, and make you look silly and childish (when after all, she is the one being silly and childish.)
When at her house, offer to order in Pizza at 6:00, so you can leave at 7:00. (As part of the strategy dontmindifido outlined.)
Or, take food to her house for dinner, if you go. Make a lovely casserole or lasagne, or something like that, so it just needs to be heated up at 5:30, for dinner at 6:00. (Make sure you are not tricked into being out "for a walk" at 5:30, though!)
Definitely use DS as an "excuse" for needing to leave early, or finish an evening at yours early. Definitely don't get him out of bed at 10:00 to walk her to the station! (Incidentally, if she is okay to travel on public transport for an hour alone at 10:00 or 11:00 pm, why does she even need walking to the station? Okay, I know it's polite, but certainly not necessary for everyone to go!)
The trouble with DH is that he is so accustomed to doing everything her way, it just won't occur to him to do it a different way, unless he sees it "modelled" by you.
(One day MIL had commanded our presence to a family dinner on the day we were moving house. It would've meant stopping our unpacking to make ourselves presentable, driving for an hour and a half each way, and having dinner with her sister and DH's cousins whom he dislikes. All on top of being shattered from having moved house. DH didn't want to tell her we couldn't come. I said, "I'll do it!" and picked up the phone and just did it. He was utterly amazed that such a thing could be done!)