Use a dynamic amount of content.
You can't know how long that 3 page long dungeon will take to play. Instead prep the games in small chunks. Add more chunks as necessary during the game session. When you're approaching the end point, run the final segment of the game.
As requested, here are some examples. I held off from posting them when I first wrote this up because they're tricks I've used for different purposes. But I think they'd also work well here.
In social or urban games I like to plan ways to interrupt the party. Maybe it'll be an NPC seeking a PC, or a messenger raven, a world event, whatever. When I do these I also make a note of which PC an interruption will address. A PC's best friend, mentor, apprentice, etc does not interrupt the party, he interrupts that PC. The reason I do this is so that if I see anyone losing interest in the game, I'm immediately ready to reel them back in.
I don't think that last half applies to you (although I do think it's a good idea for anyone.) The part I think you can use is to simply have these mini hooks in your pocket. Deploy them as needed.
My other example is actually another implementation of this same idea but I didn't realize it till now because I came about it for a different reason.
I don't like making maps when I prep. Many of the decisions when I map are totally arbitrary, but I spend a ton of effort making sure I transcribe the map perfectly. I prefer to decide on the map at game time.
I still plan for map features in advance. I do this by making a list of the things I want to see in the dungeon. My list will look something like this: 3 kobolds, 1 goblin shaman; 2 kobolds, 4 hidden kobold archers; femur full of teeth marks, pit trap, pit trap w/ trapped kobolds, scrap of paper with elven scribbling, etc, with book references for anything I may need to look up.
As we play I improvise some paths between the rooms. When the players reach a room I look through my list and pick something that feels appropriate. As I said I do this because it lets me improvise the part of the dungeon I don't like to prep while keeping the dungeon from feeling like I'm totally winging it.
I think you could apply it to stretch or compress the length of your games. Make a list of 15 things to put in your dungeon. Expect 10 of them to happen and don't feel obliged to run them all. If the session gets you through only five of them, so be it, the sixth item will be the conclusion to the dungeon, allowing the players to return to town.
Be willing to cut things short
It's okay to end the game early if you're ending on a cliffhanger. Ending with "cliffhanger - reveal - 15 minutes of setup for the next week" isn't going to satisfy anybody.
I'm being pretty loose with the term cliffhanger by the way. What I mean is if you reach a logical stopping point, stop. If the party finds its way back to town, does some shopping, rests up, and then resumes their journey, you're not automatically obliged to keep running. You may have some play time left, but if that play time is going to dig the players into a hole somewhere, you're probably better off stopping in town where it makes sense to end.