I did not read your post closely and there is a better way than my above suggestion.
This is the default Phone Port OutboundCallRoute:
{([1-9]x?*(Mpli)):pp},{(<#:>|911):li},{**0:aa},{***:aa2},{(<**1:>(Msp1)):sp1},{(<**2:>(Msp2)):sp2},{(<**8:>(Mli)):li},{(<**9:>(Mpp)):pp},{(Mpli):pli}
You said in your post the default Phone Primary Line is set to SP2.
The rule {(Mpli):pli} points to the Primary line and is the equivalent to {(Msp2):sp2}.
The OutboundCallRoute is processed left to right, so rule {(<#:>|911):li} will match 911 first.
To fix the problem just remove {(<#:>|911):li}.