SR 20 continues northeast, passing between Lake Campbell and Similk Bay, to Sharpes Corner, where it is joined by a spur route serving Anacortes. SR 20 turns east and supplants the spur route's divided highway, traveling across the Swinomish Reservation and crossing the Swinomish Channel to the Skagit Valley. The highway follows a branch of the BNSF Railway, serving the Shell and Marathon oil refineries on March's Point, along the south side of Padilla Bay. Near Skagit Regional Airport, it intersects SR 536, which connects to Mount Vernon, and veers northeast along a four-lane expressway. SR 20 enters the city of Burlington, where it intersects I-5 and transitions into a city street and turns north onto Burlington Boulevard. The street crosses the BNSF Railway and turns east onto Avon Avenue, crossing the BNSF mainline and joining the North Cascades Highway. SR 20 continues northeast out of Burlington along a branch of the BNSF Railway and the Skagit River into Sedro-Woolley, where it becomes concurrent with SR 9 while bypassing the city's downtown. The highway travels east along the Skagit River, climbing uphill into the Cascade Mountains and passing the towns of Lyman and Concrete, located below Lake Shannon and Baker Lake. At Rockport, SR 20 intersects the eastern terminus of SR 530, which continues towards Darrington and Arlington.