Use a rail to rail opamp that can run from 3.3 V. Many of the Micropchip MCPxxx line, for example, can do what you want.
Run the opamp in positive gain configuration with ground as the reference. The gain needs to be about 8. All you should need is the opamp with its bypass cap, and two resistors.
As Andy pointed out, even "rail to rail" opamps might not do what you want within a few 10s of mV of either rail. Check the datasheet.
If this is a problem, you can use a small charge pump to make a small negative voltage. There are charge pump ICs for this purpose, but if you have a microcontroller with a spare pin this can be even simpler. I have used the clock output feature of a micro a few times just to run a charge pump from. If you only need a few mA, you can run the charge pump directly from the clock out or PWM logic signal. All you need is two diodes and two caps. If you need a little more current, follow the logic signal with a NPN/PNP emitter follower pair. That will reduce the negative voltage magnitude by 1.4 V or so, but even with 3.3 V supply there is plenty left to get ground well past the rail region of a "rail to rail" opamp.
With a volt or two negative supply, you can sometimes use much cheaper opamps, which makes the charge pump option cheaper overall. For example, if you can use a LM324 if only you had a negative voltage, then quite likely the more expensive opamps that go to the negative rail will outweigh the few diodes and caps to make the charge pump.
As always, look at the opamp datasheet carefully. If the micro is running from 5 V and you are using the logic signal directly to drive the charge pump, you may actually be giving the opamp too much voltage. The opamps that get close to real rail to rail performance also tend to work over a limited supply range.
If you do use a charge pump, it would be a good idea to filter the charge pump output before it is applied to the opamp negative power input. A ferrite "chip inductor" in series followed by a 20 µF cap to ground should be enough.