The 22-year-old is due to have a medical in London on Friday and will finalise terms on what is expected to be a five-year contract.
Although the finer details are yet to be concluded, sources claim Arsenal will pay an initial €35m with a further €5m possible in performance-related add-ons.
Vieira has scored seven goals and registered 16 assists in 39 appearances for Porto and has played in a number of positions, including as a No. 10, a No. 8 and a second striker.
He is yet to make a senior international appearance for Portugal but has featured 20 times for their Under-21s.
Vieira had a release clause of €50m but sources have confirmed Porto accepted a lower offer from Arsenal and barring any last-minute issues, the deal is expected to be completed in the coming days.