So, I lack of marth players, but I do have played against various so I ended up with the same problem but now I realized that everything is in the spacing, as dan smith said, dash dance is a very good resource against marth, since ness can easily throw aerials out of the dd. So I'll post all my thoughts.
In terms of range Marth wins every time, your best weapons are fair and dash attack being the securest attacks that ness have. You can't simply try to grab by obvious reasons, however, there are some ways to get a grab, for example after a djc fair but it still can fail, depending on the DI, the damage, etc.
As many of you have said, approach is not much of an option, you should rather try to fake out or provoke, well spaced djc bairs can do it very well, as you force him to shield and if spaced correctly is hard to punish.
So here's what I do:
Starting the match I try to gain position on the stage and remain in a secure spot, wavedashing foward and backward, dash dancing can help you get the space you need, if the marth gets too close I throw out a short hopped fair and downtilt, since the short hopped fair autocancels, the downtilt comes really fast so you avoid getting grab most of the times. The thing is to build damage, every hit counts, then you try to gain center of the stage (I know is not that easy). Ness has good kill setups, like autocanceled dair to up-air/back-air, also at mid percentage and DI in you can fair to reverse bair/nair. Something that worked, even though I was only occasionally, has forcing Marth to double jump so then I could combo him to his dead. I'm still searching for tools on this matchup, if I find anything useful I'll share it.