I've previously shared some tips for weaving in ends, but there's another trick I use when I'm joining a new skein of yarn of the same color that helps secure the ends. The basic idea is that I knit three stitches with both the old and new yarn held together.
To start, I hold the end of the old yarn together with the end of the new yarn. The key here is to make sure you have the yarns going in the right direction, meaning that you want the actual ends to be opposite one another (so that the old end and the yarn coming from the new ball are together). That's probably easier to show you that to describe, so here's what that looks like:
Work the next three stitches with both of these yarns held together. This works best if you have three knit stitches (and if you're on a right side row). I've done this on the edge of the work or even anywhere along in the row. I usually pick a spot where it's not going to be too obvious, but that doesn't have to be the end of a row.
When you work the next row, remember that these three stitches will have two strands of yarn. Make sure to work the two strands of yarn as one stitch--don't accidentally create new stitches here by working them separately!
You'll notice that the stitches may look a little bulkier here, but they mostly fade into one another and don't stand out. Of course, super bulky yarns will make this more obvious and if you're in a lace pattern, it might also be more obvious there. Below is the right side and wrong side with this join.
There's one more thing you can do to hide this slightly bulky section. Once you've work a few more rows, or even when you go back to weave in these ends after you've completed your project, hold onto this section and pick up one of the yarn ends. Give a slight pull on it to tighten up the stitch using that yarn end. Then do the same thing with the other yarn end. (I did have to pull one side harder to get the stitch to fade; then I did some stretching of that section to make things even out a bit more.) Note that you're only tightening one of the yarns in each stitch, so it shouldn't tighten the main stitch itself. By doing this, you're making that duplicate stitch smaller and less noticeable. Then, weave in the ends, knowing there's a little extra security right there for the join.