Something I like to do against a defensive Marth is sit and crouch-wavedash right outside their SH Fair range. Usually they'll go for a Dtilt here, and if you can predict it you can jump over it and land a Bair/Fair before they can IASA to a Fair. The more classic responses are:
A. Get a percent lead and camp like hell. This matchup is weird in that way, whoever has the lead can camp the game away, and whoever's behind has to approach. So if you get a lead, abuse it. Camp. Plank on the edge like Hbox for 6 minutes. Do whatever you have to do to avoid losing your lead.
B. If you get behind, really all you can do is try to out-space them. You're faster than Marth in the air, use it to your advantage by staying there. Use platforms, especially the top one. Even if they're in the lead, they might get frustrated if they just can't hit you. Eventually they'll make a mistake. Once you make them miss, you can try to get in with a quick Bair, but this has to be REAL quick because Marth's double Fair is stupid in this matchup. If they miss a Fsmash, on the other hand, go in with anything and make them pay hard.
C. Wavedash out of shield. You can actually Rest Marth out of shield easily if you shield a mis-spaced Fsmash, but if you shield a Ftilt, Fair, or tipper Fsmash, you can often wavedash toward them and land a quick aerial to start comboing. Also, if you're facing away and they hit your shield with anything laggy, WD Utilt is a guaranteed follow-up at most percents.
The thing about the Marth matchup is, while he can't really combo you, you combo the ever living heck out of him once you do get in. In that way it's pretty much the opposite of every other Puff matchup.