I read a thread about Dave Arneson's First Fantasy Campaign right before I went to bed, and this is the first think that popped into my head when I woke up.
On a d6, assume that a roll of 1-2 = 1, 3-4 = 2, and 5-6 = 3. Roll 2d6, and multiply. This gives a flat result of 1-9.
EDIT: As pointed out in the comments, this is not flat at all. That's what I get for posting while half asleep. As Dallas M on G+ pointed out, 3 * (1d3 - 1) + (1d3 - 1) + 1 produces the desired results. And his further formulation is even better:
Start with range 1-9.
Roll 1d3: that chooses one of the subranges 1-3, 4-6 or 7-9.
Roll 1d3: that chooses a result in the chosen subrange.