The brief
The 318i had been stumbling, losing power, idling rough, vibrating, getting worse fuel economy, and a check engine light was on. That set of symptoms is a misfire, and on a BMW past around 120,000 km the usual culprit is worn ignition coils, often alongside tired spark plugs. A misfire is a cylinder that isn't lighting cleanly. The ignition coils fire the spark plugs, and when a coil starts breaking down it drops its spark under load, so that cylinder misses, which is the stumble, the power loss and the rough idle. The plugs wear too, and at that mileage both are at the end of their life. The proper fix is to refresh the ignition side as a set rather than chase one part and be back soon for the rest.
The diagnosis
A diagnostic scan confirmed the misfire and pointed at the ignition side. The plugs came out worn past spec, and at this mileage the coils were the same age and the same wear item. So the call was the standard refresh, a fresh set of coils and a fresh set of plugs, which heads off the misfires for the long run.
The work
New genuine BMW-spec ignition coils went on, with new genuine BMW-spec spark plugs underneath them gapped to spec. The harness clips were reseated, and the stored fault codes cleared. Then the engine was run to confirm it was firing cleanly with no stumble, followed by a road test to confirm the power was back, the vibration was gone, and no misfires returned.
The outcome
Power back, a steady idle, no stumble, no vibration, fuel economy back to normal, and the check engine light out after a drive cycle. The 318i went home running cleanly and good for the next interval. Coils and plugs are wear items that age together, so doing the full set in one go means even, reliable ignition rather than another misfire a few thousand kilometres down the road.