In my last session, a player attempted to get in an attack on some giants that were not yet aware of him, so we rolled initiative. The giants were surprised, so they didn't get to go first, but the player rolled low initiative, causing the other players to go first. This lead to a combat that was incongruous with the narrative, and frustrating to the initiating player due to the other players effecting the combat first.
How can we balance the initiative system with narrative first mover? In the past I made the mistake of allowing characters who declared an action to get some version of it in before initiative, but this further unbalances the action economy, and increases the first mover action.
What other rules modifications can maintain the narrative about start of combat without overly unbalancing the combat?