Lots of dash attacks, and actually no tilts (I don't think he even remembers me teaching him about those). He grabs sometimes. Honestly, lots of dash attacks, dsmashes, and fairs. Lots and lots of fairs.
Yeah, I tend to play Link and Puff against the lower level players so I don't get crap habits on Marth/Falco, but even when I play Marth against him I get caught up most times. We probably go 50/50, but it goes significantly more in my favor when I play Falco.
I don't think I shield enough, honestly.
Being able to play against bad players is an important skill; play your main against them. You will develop bad habits if you just play mindlessly and make tons of fundamental errors because you know you can win anyway just from better punishes or whatever, but that's irrelevant because that's not what you're supposed to do. What you should be doing is actively watching for their (obvious) poor decisions and then adjusting to them. Playing pocket characters won't stop you developing bad habits; it will just give you less appropriate practice, and worse,
give you excuses to play badly and therefore build bad habits.
If you're a "good" player but you still lose to things like this then there are obviously gaping holes in your game that just happen to go unexploited sometimes (and therefore you're not as good as you think). Playing bad players who can beat you teaches you how to beat that kind of player (which is important), but also how to be aware of your own bad habits and how to fix them.
Look for patterns and exploit them: maybe he always shield grabs if you poke his shield, maybe he always recovers the same way, maybe he always down smashes if you approach him by the ledge, etc. Once you notice the action and the situation it occurs in, you can deliberately create that situation and then respond correctly to counter him (because you know exactly what he's going to do). This requires awareness during the game; if you're having trouble with maintaining it then force yourself to take a breather between stocks/games and make sure you're still thinking.
You said you don't shield enough. You
know you don't shield enough, so next time you play, go into the game with the intention of shielding more and make sure to keep it in your mind. Develop an understanding of which situations you should and shouldn't be shielding in. Build good habits; pick a thing or two at a time to focus on and actively incorporate.
This thing I wrote is relevant (start from the third paragraph for the immediately pertinent part, but the rest of the post/thread is relevant too):
http://smashboards.com/threads/fast-play-bait-play.392518/#post-18646250
I'm assuming he's not L-cancelling, short hopping, or properly spacing his fairs; so shieldgrab them. If he's spamming fair then he's going to be in the air a lot; intercept him by doing something like hitting him out of the air or dash dancing away and then grabbing his landing. Recognise that by being in the air he changes which options are available to him (limiting some and opening up others) and adjust your strategies accordingly; if he's in the air he loses the ability to grab and shield, and his ability to cover certain areas of stage (no dash-dance, no potential hitboxes below him besides down air, etc.). Think about what this means and what you should do about it. There are many people/resources that explain the specifics of this concept better than I can.
If he doesn't use tilts and rarely grabs then he can't really start any combos on you; you shouldn't be getting beaten from just single hits, so ask yourself what it is that's making it so effective.
Things that are OP against casual players
• Shieldgrabbing; without proper spacing and L-cancelling (in the case of aerials) many attacks are free to shieldgrab.
• Crouch-cancelling; they have no awareness of the percentages it works at and will use crouch-cancellable moves indistriminately. In general you should pretty much always do it for as long as it prevents you leaving the ground when you get hit.
• Dash-dancing; they get scared/baited into committing really easily. Dash in and out and wait for them to roll or swing at you or use a panic defensive option, then punish reactively.
• Spaced moves on shield; without wavedash out of shield or consistent immediate aerials out of shield, it's impossible to punish most moves from outside of shieldgrab range.
If he's not DIing (I assume he wouldn't be, or at least not consciously/consistently) then things like forward throw chain grab to forward smash with Marth will work consistently. You have to be aware of when your opponent lacks the requisite skill/knowledge that lets them deal with gimmicks like this (or when they are able to counter you but you can still catch them by surprise); you should use them as appropriate, but also remember why they're working and don't make them a crutch/habit.