Malmo's Sturup Airport doesn't accept widebody long-haul traffic from the Pacific Northwest, which means there's no nonstop option—every itinerary in business class from Portland to Malmo routes through a European or Scandinavian gateway, typically Copenhagen (a short hop or train ride from Malmo across the Öresund Bridge), Amsterdam, or Frankfurt. This is actually a blessing in disguise: it gives travelers three distinct carrier experiences to choose from, each with its own onboard product, rather than a single monopolized routing. SAS flies PDX-Copenhagen on select seasonal patterns with connections via other US gateways when direct PDX-CPH isn't scheduled, offering their Business class with fully flat seats on long-haul aircraft, while KLM routes through Amsterdam with their World Business Class product on the 787 or A330, and Lufthansa connects via Frankfurt or Munich, where select aircraft now feature the new Allegris business suites with sliding privacy doors—though rollout is still uneven, so it's worth checking the specific aircraft type before booking.
Having flown all three routings multiple times, my strongly-held preference is the KLM connection through Amsterdam: Schiphol's transfer process is refreshingly efficient for business class passengers, and the short KLM Cityhopper or SAS onward flight to Copenhagen (then the train to Malmo) adds minimal fatigue compared to connecting through Frankfurt during its frequent afternoon congestion. One insider tip that rarely gets mentioned: if you're connecting via Copenhagen on SAS, the train from CPH airport directly into Malmo Central takes just over twenty minutes and is far less stressful than arranging a second short flight—factor this into your routing search even if it doesn't show up as a single itinerary.
Late spring through early autumn—May through September—is unquestionably the sweet spot for this route, both for Scandinavian weather and for award and premium cabin availability, as Nordic carriers open up more business seats during peak tourism season to Sweden's south coast. Given the routing complexity and the way fares fluctuate based on which hub is cheapest that month, this is a route where setting up automated fare alerts pays real dividends rather than manually checking every few weeks.