I started this after shopping at the post-holiday sales, one year. Our local fabric shop had Christmas fabrics (100% cottons) at absurdly low prices, so I bought a quarter- or half-yard of several different fabrics. I also bought ribbon on sale.
At home, after preshrinking the fabrics, I tore them into different sized rectangles. (100% cotton tears in straight lines, and it's easier than cutting.) I machine-hemmed the edges that would be the opening of the bag, french-seamed the side seams, and then tacked about a half-yard of ribbon so it would hold securely at a point about three or four inches from the opening of the bag.
Every year, I shopped at the after-holiday sales and bought a little more fabric to add more bags to our collection. After about three years, we had enough bags in a wide range of sizes, so we never had to buy wrapping paper again.
After awhile, I learned to put a ribbon loop on the outside of the bag, on the side exactly opposite where the ribbon (for tying the bag closed) was tacked. I'd feed the ribbon through this loop before tying the bow that'd keep the bag closed until Christmas/Yule morning.
Some ribbons hold up better than others. Grosgrain is always a safe bet, but it needs to be ironed to remain flat & fresh-looking each year. Satin ribbon is the easiest, but often the most expensive.
When my kids were little, there was an added benefit: We never had to worry about the little ones accidentally throwing away something important (like directions for a game, or a small part to a toy) with the wrapping papers. As the kids opened their presents, I'd take each bag, make sure it was empty, fold it and put it out of the way. (This isn't as "control freak" as it sounds.) Less rubble, and far more fun.
I'll have to create some illustrations that make the project easier to understand... but, for now, I hope this idea makes enough sense for others to use.