If your friend breeds Pokemon competitively, and EV trains them, you're going to have a hard time competing with him. Even if you had the exact same Pokemon on your teams, his team would be better than yours. You can think of IVs as being kind of like genes that dictate a Pokemon's potential. You can train all you would like, but if his Pokemon have better genetics (IVs) than yours, you can't make up for that by training. IV breeding is a little confusing (though easier in this game than in the past), so if you've never done it before, it might be the best starting place.
EV training allows you to focus a Pokemon's attention on particular stats. You have 510 points to distribute over the six stats. For every 4 points in a stat out of 510 EVs, you get 1 extra point in that stat at level 100. You can put up to 252 EVs in a stat in Y, increasing its value by 63 points at level 100. So, for example, if you wanted a really fast Pokemon, you could increase its speed EVs to make it faster. Of course, if the Pokemon was inherently slow (e.g., Slowbro), or if it had a lower speed IV (gene) than a similarly trained Pokemon of the same species, you still won't outspeed your friend, but by enhancing your Pokemon's stats (generally their best stats, rather than their weaker ones), you can help your Pokemon fare better in battle. Your Pokemon probably have maxed out EVs already from their use in-game, but with a freshly caught or hatched Pokemon, you can raise its EVs using the Super Training feature and watch as they develop in graphical form. (There are other ways to EV train, but for someone who has never done it before, Super Training makes the most sense conceptually. The Super Training gains, like "+1," are equal to EV points.)
The next suggestion I would make is to vary up the movesets of your team members. In-game, it can be useful to have multiple moves of the same type in case you run out of PP for one of them, but competitively, there generally isn't a reason to use multiple moves of the same type (unless one is a status move, like sleep powder or something, and another is a damage-dealing move). You're better off varying up your movesets a bit more so you can deal with a greater variety of Pokemon. Ideally, you want to have multiple Pokemon on your team who can deal with any one Pokemon on your opponent's team. That way, if one of your Pokemon faints before it takes out the corresponding Pokemon on your opponent's team, you'll still have a shot at winning the match.
Next, look at your Pokemon's stats, and compare them to their movesets. If you have a Pokemon with a high attack, but a low special attack, don't give it all special attacks. They may balance out its movepool, but they simply won't do that much. Certain Pokemon work well in certain roles, so look through each Pokemon and see where you think it would do best. Is it an offensive Pokemon? Defensive? A physical attacker, or a special attacker? There are a lot of different Pokemon roles, and figuring out what niche your Pokemon would fill best can help you improve your team.
There are a lot of other things you can do (improving which items you use with each Pokemon, getting better abilities for your Pokemon, or hatching new level 1 Pokemon with better IVs, egg moves (moves they can only learn through breeding, not in the wild), etc.), but hopefully these tips will help a bit.