The following circuit is based on the L293D which has several plus points for a minimal controller. The 'D' on the end of the 'L293D' means that it includes output diodes meaning that you need less additional components at the expense of a smaller current output.
For the L293D datasheet see http://www.st.com/stonline/books/pdf/docs/1330.pdf
This controller is limited by the abilities of the L293D:- it can provide 600mA per motor or a maximum of 1.2 amps for a micro-second.
The motor supply can be between 5 and 36 volts.
Each motor requires two pins from the micro-controller and this uses the 'tri-state switch' stage mentioned earlier.
This requires one tri-state switch per motor;
one L293D for every two motors. The L293D costs about $4.30
So about $6 in total - for driving two motors
NB I now recommend that you use an SN754410 instead of the L293D. This is a direct plug in replacement and has the advantage it can provide 1A rather than 600mA and it also costs about 98 cents !!!