en este caso exísten integrados dispuestos a ese fin y puedes conectar la entrada de datos desde el GPIO (no la de corriente!!!! ni se te ocurra alimentarlos con el arduino!)
está el L293D (
aquí el datasheet) que te permite manejar 2 motores con hasta 600mA por canal (2 canales por motor)
está el L298D (
aquí el datasheet) que tambien maneja 2 motores y soporta hasta 4A en total de consumo, a demás tiene para conectarle un dispersador de calor si lo necesita... (tambien 2 canales por motor)
estos 2 con buscarlos en google verás como son usados
si lo haces con transistores, tendrás que armar un puente H (que es la naturaleza de esos 2 integrados) y revisar a ver cuales transistores soportan la carga de lo que intentas armar