How can a controller change the url reported to browser?
You've already tagged the question with "redirect", so this is what you need to do in step 2+3. Don't return a render array, but a redirect response to the second route providing a couple of extra parameters:

return $this-&gt;redirect('second.route', ['route_parameter' =&gt; '123'], ['query' =&gt; ['foo' =&gt; 'bar']]);