Tillakaratne Dilshan scored 50 in his first match as Sri Lanka captain on Thursday before England claimed two late wickets to reduce the visitors to 133 for two on a rain-shortened opening day in the first Test.
Opener Tharanga Paranavitana was unbeaten on 58, passing 1,000 Test runs in the process, while Dilshan reached his half-century before playing on to off-spinner Graeme Swann.
Kumar Sangakkara was then controversially given out caught behind off James Anderson for 11 on a third umpire review.
Aleem Dar rejected England's appeal against Sangakkara but their referral was vindicated when television umpire Rod Tucker sent him on his way.
A noise and a slight white mark on the hot spot replay seemed to convince Australian Tucker, although Sangakkara was visibly annoyed by the decision. Sangakkara, though, accepted the decision after reviewing the dismissal.
"After he came to the dressing room and saw the replay he felt there might have been an edge on hot spot," Dilshan told reporters.
Anderson said: "We were convinced (he was out). With the breeze, the guys in front of the wicket were not too sure but those behind the stumps were sure."
The start was delayed by rain for more than four hours and play did not commence until 1430GMT, allowing only 48 overs in the day.
Both sides were pleased with their performance on a day that ended in the balance.
"I'm definitely happy to be 130-odd for two," Dilshan said, "but I'm disappointed to have played a very bad shot and got out.
"Paranavitana batted really well and left the ball well. I think 350 or 400 would be a good score on this pitch. It's slow and a bit two-paced but we think it will turn from day three or four."
Dilshan put on 93 with left-handed opening partner Paranavitana on a placid surface after negotiating an awkward 16 overs against the swinging ball to reach 35 at tea.
They played and missed frequently but still punished the wayward deliveries, of which there were several.
Stuart Broad, who came into the match on 99 Test wickets, conceded 11 runs off his first over although he did manage to beat the outside edge of Dilshan's bat twice.
Dilshan passed 4,000 Test runs when he pushed an Anderson delivery to the vacant mid-wicket area for two but required treatment at the end of the over after the last ball struck him around the groin area.
Paranavitana, who scored centuries in both of Sri Lanka's warm-up matches, registered his 1,000th Test run with a single.
He had faced 154 balls by the close with six boundaries, including two square cuts off Chris Tremlett the first of which raised his half-century.
"I thought we did well considering we spent most of the day in the dressing room," Anderson added. "They played and missed a few times but left the ball well also, though I thought those wickets were well deserved in the end."
Intermittent sunshine broke through after play began, although more showers are forecast for the remainder of the match.
The Swalec Stadium, belonging to the local Glamorgan county club, was only half full with one stand closed off.