If your service engine light is on you need to get the codes read. A local Autozone or similar will read them for free. Get those checked and post them up. Also search for the codes for background information on what they mean.
Right now we're sort of guessing in the dark and the codes will tell you what the likely problem is.
My E46 M3 Rebuild Thread